我有一个gitignore文件,除了某些特定文件外,它不包含源目录:
/src_app
!/src_app/Learning\ Module\-darwin\-x64/
!/src_app/assets/icons/mac/
“学习模块”目录中的“从忽略忽略”的正则表达式与“图标”目录中的“从忽略忽略”的正则表达式相同,只是我在学习模块目录中转义了空格,而图标目录却没有。不需要。
奇怪的是,学习模块目录下的所有文件都被识别,而图标目录下的文件没有被拾取。
这两种模式之间的区别是什么,使得git可以识别一个子路径而不能识别另一个子路径?
答案 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。