忽略除特定文件夹(及其所有子文件夹)外的所有文件类型?

5

我正在尝试配置.gitignore文件,使得所有具有特定扩展名的文件被忽略,除非它们出现在特定文件夹内或该文件夹的任何子文件夹中。我已经尝试了以下代码,但它并没有起作用:

*.lib
!Libraries/

我有一个第二个问题,否定的排除只适用于紧随其后的规则,还是适用于到目前为止定义的每个规则?- 这篇文章几乎回答了我的问题,但对于子文件夹没有帮助。
2个回答

6

我认为你的意思是忽略所有的*.lib,除非它们在/Libraries文件夹内。请尝试以下代码:

# The root directory's .gitignore
*.lib
!/Libraries/*.lib

# The .gitignore under /Libraries directory
!*.lib
< p > .gitignore 文件从上到下解析。任何规则都可以覆盖先前的规则。


4

尝试使用双星号,**。在你的.gitignore文件中添加以下内容:

*.lib
!/Libraries/**/*.lib

双星号可匹配任意子目录组合。这个答案解释得很好。
至于您的第二个问题,@Tuxdude是正确的:由于解析.gitignore的方式,规则将覆盖其他规则直到该点为止。

1
我尝试了这个方法,但它似乎只能跟踪/Libraries直接下面的.lib文件,而不能跟踪任何/Libraries子目录下的文件。 - Tuxdude
一些注意事项:**匹配任意数量的目录,包括零个,因此第二行是多余的,并且**解析是在git 1.8.2中添加的,这是在2013年初。测试表明这对我有效? - Simon Buchan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接