【问题标题】:Ignoring certain files in directory even when adding directory with -f即使使用 -f 添加目录时也会忽略目录中的某些文件
【发布时间】:2012-08-01 01:19:48
【问题描述】:

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

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

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

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

第一行的* 成功忽略了所有文件,因此我使用git add -f 明确添加内容。但是,这会产生我想要忽略的文件的副作用。

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

【问题讨论】:

  • 我不会使用“add -f”,而是正确地声明忽略。那么您想在这里实际忽略哪些文件类型?
  • @centic 基本上几乎所有的文件都应该被忽略。我想,因为我将它用于点文件,所以我会忽略不以句点开头的所有内容。在git status 中,我会看到一些我真的不关心的点文件,但由于不应该有那么多,我可以自己忽略它们,而不是让 Git 去做。也就是说,除非有某种预提交或添加后挂钩,否则我可以使用它来“取消添加”我真正想忽略的文件。
  • 那么我认为你在使用 -f 时不能忽略更多。

标签: git gitignore git-add


【解决方案1】:

目前没有简单的方法可以做到这一点,因为通过将* 放入.git/info/exclude 中,您实际上是在“屏蔽” git,您确实希望始终忽略哪些文件。这是使用 git 进行点文件管理的分离工作树方法的一大缺点,这也是我个人拒绝这种方法的原因之一。相反,我写了一个pluginmr,它通过GNU Stow 自动化符号链接农场管理。

但是,如果您仍想坚持使用分离的工作树方法,则绝对应该查看vcsh,而不是重新发明轮子。 I am currently working on making git's ignore mechanism more scriptable,并且有可能这项工作将来可以被vcsh 之类的工具使用,以至少部分解决这个问题。 (我认识vcsh 的作者,刚刚在 IRC 上向他提出了这个想法。)

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

【讨论】:

  • 感谢您的建议!
猜你喜欢
  • 2022-01-25
  • 2010-12-19
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2011-01-30
相关资源
最近更新 更多