在 $home 目录中使用 git init 来跟踪点文件是不是一个不好的做法?

在 $home 目录中使用 git init 来跟踪点文件是不是一个不好的做法?

我想使用 github 备份和同步我的点文件。由于所有点文件默认位于 $home 中,我应该只将其放在git init我的 $home 文件夹中吗?或者这是个坏主意?

在 $home 中执行之后git init,我的想法是 .gitignore 所有非点文件和非点文件夹。

答案1

创建一个“裸” git 存储库:

cd $HOME
git init --bare .dotfiles

--bare标志创建一个没有工作目录的存储库,从而无法编辑文件和提交该存储库中的更改。

创建一个别名来管理我们刚刚创建的存储库:

alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"

忽略未被跟踪的文件git status

dotfiles config --local status.showUntrackedFiles no

添加您想要的文件:

dotfiles add .bash_aliases

犯罪。

dotfiles commit -m 'Add .bash_aliases'

现在使用存储库后,您的目录中bare就没有目录了;因此在使用时不会引入任何意外。.git$HOMEgit

这就是我管理自己的方式dotfiles。我第一次读到这里几年前。

答案2

这是个很好的做法,但你应该默认忽略所有文件,只添加你需要的文件。下面是一个例子.gitignore

# ignore all
*
# include dot files (including .gitignore)
!.*

您还可以通过在 .gitignore 末尾添加其他行来排除其他文件:

# ignore all
*
# include dot files (including .gitignore)
!.*
.ssh 

答案3

如果您对于在主文件夹中拥有 git 存储库感到有点不安(我会这样),您可以考虑这个想法:

  • 在其他地方创建一个 git 存储库,例如,~/src/configuration或者~/etc任何您喜欢的地方。
  • 将所有配置文件放入其中。
  • 将您的配置文件(在正常路径)用符号链接替换到此存储库中。
  • 也许可以编写一个简单的 shell 脚本来检查符号链接是否指向您期望的位置,然后在 cron 作业中每天运行它。

计算中的每个问题都可以通过额外的间接层来解决;-)

答案4

你可以看看雅德,它主要做这个,但我猜它更安全,设置可能更容易。我认为它一开始只是 git 的一个包装器(但它确实有更多功能),这意味着你可以使用通常的 git 命令替换gityadm如 yadm add/clone/status 等)。

我与 yadm 没有任何关系,只是一个快乐的用户。

相关内容