我正在尝试配置.gitignore
文件,以便忽略具有特定扩展名的所有文件,除外,它们出现在特定文件夹中,或该文件夹的任何子文件夹中。我尝试过以下哪些不起作用:
*.lib
!Libraries/
我的第二个问题是,否定排除仅适用于前一个规则,或者是否已经定义了到目前为止的每个规则? -
This几乎回答了我的问题,但对子文件夹没有帮助。
答案 0 :(得分:6)
我认为你的意思是忽略所有*.lib
,除非他们在/Libraries
内,试试这个:
# The root directory's .gitignore
*.lib
!/Libraries/*.lib
# The .gitignore under /Libraries directory
!*.lib
.gitignore
从上到下进行解析。任何规则都可以覆盖先前的规则。
答案 1 :(得分:4)
尝试使用双星号**
。您.gitignore
中的此类内容可能有效:
*.lib
!/Libraries/**/*.lib
双星号匹配子目录的任何组合。 This answer解释了它的运作方式。
至于你的第二个问题,@ Tuxdude是正确的:由于解析.gitignore
的方式,规则将覆盖到那时为止的其他规则。