我将配置文件(~/.bashrc
,~/.emacs
,~/emacs
等)存储在git中。我配置它的方法只是在home目录中添加一个git存储库。
我发现这种方法存在一些问题:
git gui
需要永远,因为它递归扫描整个家庭目录。~/projects/foo
,忘记它还没有初始化git repo,并执行{{ 1 {}在git add bar.xyz
目录中。这会导致文件被添加到配置库中。我不确定将git存储库嵌套在已经拥有git存储库的目录下是明智的,尽管我还没有遇到任何基本问题。
是否有更好的方法,或者这是人们在git中存储本地配置文件的标准方法?
答案 0 :(得分:3)
我正在使用git repo来管理dotfiles。它包含:
dotfiles
,其中包含我想要跟踪的实际dotfiles / dotdirs。一个shell脚本,用于在dotfiles/.*
中创建$HOME
的符号链接,例如
for dotfile in dotfiles/.* ; do
case $(basename $dotfile) in
.)
;;
..)
;;
*)
ln -sv $(realpath dotfile) $HOME/$(basename $dotfile)
;;
esac
done
我在dotfiles
中添加新内容后(通常将点文件移动到repo中)或新的干净$HOME
中手动运行脚本。
回购可以驻留在任何地方。我在我使用的每个主机上都有一个$HOME
克隆。
通过这种方式,我有一个更小且非嵌套的工作树,可以有选择地跟踪dotfiles。
P.S。您可能希望将dotfiles/.config/*
等条目添加到.gitignore
,它包含许多我不想跟踪的文件。
答案 1 :(得分:3)
我将我的dotfiles保存在Git存储库中,就像你一样 - 我的家庭目录是一个Git存储库。
git gui
:我很少使用它,所以我不确定它的性能如何受到大量未跟踪文件的影响。但是,我的~/.gitignore
文件只包含*
。也许忽略一切都会为你加速git gui
。
无意中添加文件:创建一个只包含~/.gitignore
的{{1}}文件,还可以解决在忘记初始化新项目存储库时意外将文件添加到dotfiles存储库的问题(它如果你真的想要添加文件,请告诉你使用*
。
我从未遇到过嵌套存储库的问题。
一些注意事项:
我将-f
设置为~/.gitignore
的主要原因是*
未显示我的主目录中的每个文件。它迫使我一直使用git status
,这有点烦人,但不是那么大的交易。
养成使用git add -f
代替git clean -dx
的习惯。您必须记住在新项目存储库中运行git clean -dxf
,但如果您不在您认为自己所在的目录中,它将阻止您意外删除主目录中的所有文件。
Git有时会决定重置文件权限。如果要在Git存储库中保留敏感文件(git config clean.requireForce false
),这可能会很糟糕。我通过chmod og-rwx
钩子处理这个问题,该钩子修复了某些文件和目录的权限(例如,post-checkout
)。