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



我有一个 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/中,连字符前的反斜杠是不必要的(但无害)。 这些都不是正则表达式;它们都是球形图案。

相关内容

最新更新