忽略除特定文件夹(和所有子文件夹)内的文件类型?
问题描述:
我想配置.gitignore
文件,使之具有一定的扩展名的文件被忽略,除非其中出现一个特定的文件夹,或该文件夹的所有子文件夹中。我试过不工作的情况如下:?忽略除特定文件夹(和所有子文件夹)内的文件类型?
*.lib
!Libraries/
第二个问题我已经是,不要否定排除只适用于前一个规则,还是每一个规则你已经确定了到这一点 -
This几乎回答我的问题,但并没有帮助子文件夹。
答
我想你的意思是忽略所有*.lib
除非他们在里面/Libraries
,尝试了这一点:
# The root directory's .gitignore
*.lib
!/Libraries/*.lib
# The .gitignore under /Libraries directory
!*.lib
的.gitignore
是从上到下解析。任何规则都可以覆盖先前的规则
答
尝试使用两个星号,**
。像这样的事情在你的.gitignore
可能的工作:
*.lib
!/Libraries/**/*.lib
双星号子目录的任意组合相匹配。 This answer解释了它的工作原理。
至于你的第二个问题,@ Tuxdude是正确的:由于解析.gitignore
的方式,规则将覆盖直到该点的其他规则。
我试过这个,但是它似乎只是直接跟踪'/ Libraries'下的.lib文件,但是如果它们位于'/ Libraries'的任何子目录下,就不会。 – Tuxdude 2013-03-01 06:16:06
@Tuxdude是的,我试过了一个也是,结果相同。 – JBentley 2013-03-04 02:01:26
有两点要注意:''** *匹配字面上*任意数量的目录,包括无的,所以第二个线是冗余的,并且''**在GIT中1.8.2,这是2013年初测试表明加入解析这对我有用吗? – 2013-12-05 05:51:30