这些gitignore从忽略忽略子文件夹模式有何不同?

时间:2018-12-03 23:23:02

标签: git gitignore

我有一个gitignore文件,除了某些特定文件外,它不包含源目录:

/src_app
!/src_app/Learning\ Module\-darwin\-x64/

!/src_app/assets/icons/mac/

“学习模块”目录中的“从忽略忽略”的正则表达式与“图标”目录中的“从忽略忽略”的正则表达式相同,只是我在学习模块目录中转义了空格,而图标目录却没有。不需要。

奇怪的是,学习模块目录下的所有文件都被识别,而图标目录下的文件没有被拾取。

这两种模式之间的区别是什么,使得git可以识别一个子路径而不能识别另一个子路径?

1 个答案:

答案 0 :(得分:1)

关键是src_app/assets根本没有被读取,所以src_app/assets/icons找不到了。未被发现,因此不能被忽略,因此将对其进行扫描以找到/src_app/assets/icons/mac,从而可以使 this 被忽略。

解决方法是先取消忽略src_app/assets,然后再取消忽略src_app/assets/icons

!src_app/assets/
!src_app/assets/icons/

其中第一个使Git在src_app/assets内部(以便找到icons),第二个使Git在src_app/assets/icons内部查找。 src_app/assets/icons/mac的现有规则将生效。

(如果src_app/assets/和/或src_app/assets/icons/中有一些文件不应该被自动添加并且不应该被抱怨-被视为未跟踪,那么您将不得不列出那些被忽略的文件)


旁注:在/src_app/Learning\ Module\-darwin\-x64/中,连字符前的反斜杠是不必要的(但无害)。这些都不是regular expressions;他们都是glob patterns