我有一个 gitignore 文件,它排除了源目录,除了一些特定的文件:
/src_app
!/src_app/Learning Module-darwin-x64/
!/src_app/assets/icons/mac/
排除忽略学习模块目录与排除忽略图标目录的正则表达式相同,只是我转义了学习模块目录中的空格,而图标目录不需要它。
奇怪的是,学习模块目录下的所有文件都被识别,而图标目录下的文件却没有被拾取。
这两种模式之间有什么区别,使 git 识别一个子路径而不是另一个子路径?
关键是根本没有读取src_app/assets
,因此永远不会找到src_app/assets/icons
。 未找到,则无法取消忽略它,以便对其进行扫描以查找/src_app/assets/icons/mac
以便可以取消忽略。
解决方法是首先取消忽略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/
中,连字符前的反斜杠是不必要的(但无害)。 这些都不是正则表达式;它们都是球形图案。