我只是按照Eli Barzilay here建议的方式将我的dotfiles放在存储库中:
所以我终于找到了一个充分利用两者的解决方案:把回购 在子目录中,而不是符号链接,为其添加配置选项 “core.worktree”成为您的主目录。现在,当你在家里 目录你不是在一个git仓库(所以第一个问题已经消失),而你 不需要像第二种情况那样处理脆弱的符号链接。你还在 有一个轻微的麻烦,排除你不想要版本化的路径(例如, “.git / info / exclude”技巧中的“*”,但这不是新的。
我的.git / info / exclude看起来像这样:
*
.*.swp
*~
\#*#
.DS_Store
第一行的*
成功忽略了所有文件,因此我使用git add -f
显式添加内容。但是,这有副作用,我想要忽略的文件漏掉。
有没有办法告诉git 真的忽略某些文件,即使我使用add -f
?
答案 0 :(得分:0)
现在没有简单的方法可以做到这一点,因为将*
放在.git/info/exclude
中你实际上是“盲目”git,你真正想要忽略哪些文件。这是使用git进行dotfile管理的独立工作树方法的一大缺点,这也是我个人拒绝这种方法的原因之一。相反,我写了一个plugin到mr
,它通过GNU Stow自动化符号链接场管理。
但是,如果您仍然希望坚持使用分离的工作树方法,那么您一定要看vcsh
而不是重新发明轮子。 I am currently working on making git's ignore mechanism more scriptable,并且可能将来vcsh
等工具可以使用此工作,以至少部分解决此问题。 (我知道vcsh
的作者,刚刚在IRC上向他提出这个想法。)
最后,我建议与vcs-home
人一起讨论,以便更好地了解所有选项。