2

我只是按照 Eli Barzilay 在这里建议的方式将我的点文件放在存储库中:

所以我终于找到了一个兼顾两者的解决方案:将 repo 放在一个子目录中,而不是符号链接,为“core.worktree”添加一个配置选项作为你的主目录。现在,当您在主目录中时,您不在 git repo 中(因此第一个问题消失了),并且您不需要像第二种情况那样处理脆弱的符号链接。您仍然有排除您不希望版本化的路径的小麻烦(例如,“.git/info/exclude”技巧中的“*”),但这并不新鲜。

我的 .git/info/exclude 看起来像这样:

*
.*.swp
*~
\#*#
.DS_Store

第一*行的成功忽略了所有文件,所以我用git add -f. 但是,这会产生副作用,即我想要忽略的文件会溜走。

有没有办法告诉 git真正忽略某些文件,即使我使用add -f?

4

1 回答 1

0

现在没有简单的方法可以做到这一点,因为通过放入*.git/info/exclude基本上是“盲目” git 你真正希望总是被忽略的文件。这是使用 git 进行点文件管理的分离工作树方法的一大缺点,这也是我个人拒绝这种方法的原因之一。相反,我编写了一个插件mr通过GNU Stow自动化符号链接农场管理。

但是,如果您仍然想坚持使用分离的工作树方法,您绝对应该看看vcsh而不是重新发明轮子。 我目前正在努力使 git 的忽略机制更具脚本性,并且这项工作可能会被将来的工具使用vcsh以至少部分解决这个问题。(我认识vcsh的作者,并且刚刚在 IRC 上向他提出了这个想法。)

最后,我建议与这些人一起出去vcs-home玩,以更好地了解所有选项。

于 2012-09-10T10:47:17.087 回答