让我说我的全球.gitignore
中有“.foo”,这对我目前的所有项目都很有效(并且可以说它们有很多,所以我想把它保存在我的全局忽略文件中)。
现在,我正在开始一个到处使用.foo
文件的新项目。
如何“撤消”排除我的全局忽略中定义的.foo
文件仅用于此特定项目?
这意味着我可以只使用git add .
处理新项目并让它获取所有.foo
文件,但如果我在任何其他项目中运行git add .
,那么.foo
文件将被忽略。
你可以通过添加一个领先的!
来简单地取消模式,如下所示:
# Don't ignore .foo file
!.foo
如果你把它放在你当地的.gitignore
中,它将覆盖全局.gitignore
中完成的设置。
您可以在官方文档gitignore
中找到here中支持的模式的文档
每个存储库还有一个可以修改的本地.gitignore。
这里接受的答案告诉你在哪里看:
How do I configure git to ignore some files locally?
要unignore,只需将其添加到带有前导的本地.gitignore文件中!
你要找的是否定。见https://git-scm.com/docs/gitignore#_pattern_format
可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。
对于您的情况,只需将其添加到项目的.gitignore:
!.foo
请查看此问题以获得更详尽的解释:Make .gitignore ignore everything except a few files
请注意文档中的这个重要警告:
如果排除该文件的父目录,则无法重新包含文件。
因此,如果您尝试仅在排除目录中包含特定文件,则必须更改包含目录的内容,但排除其中的所有文件,除了您想要的文件:
!excludedir
excludedir/*
!excludedir/*.foo