这些gitignore从ignore子文件夹模式中排除有什么不同?

这些gitignore从ignore子文件夹模式中排除有什么不同?,git,gitignore,Git,Gitignore,我有一个gitignore文件,它排除了源目录,但某些特定文件除外: /src_app !/src_app/Learning\ Module\-darwin\-x64/ !/src_app/assets/icons/mac/ exclude from ignore The Learning Modules目录与exclude from ignore The icons目录的正则表达式相同,只是我要转义Learning Modules目录中的空格,而icons目录不需要它 奇怪的是,学习模块目

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

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

!/src_app/assets/icons/mac/
exclude from ignore The Learning Modules目录与exclude from ignore The icons目录的正则表达式相同,只是我要转义Learning Modules目录中的空格,而icons目录不需要它

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


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

关键在于,
src\u app/assets
根本没有被读取,因此永远找不到
src\u app/assets/icons
。如果未找到,则无法取消忽略它,以便扫描它以查找
/src_app/assets/icons/mac
,从而取消忽略它

修复方法是首先取消忽略
src_应用程序/资产
,然后也取消忽略
src_应用程序/资产/图标

!src_app/assets/
!src_app/assets/icons/
第一个命令使Git在
src_应用程序/资产
(这样它会找到
图标
)中查找,第二个命令使Git在找到后在
src_应用程序/资产/图标
中查找。
src_app/assets/icons/mac
的现有规则随后将生效

(如果
src_app/assets/
和/或
src_app/assets/icons/
中存在不应自动添加且不应被投诉为未跟踪的文件,则您必须列出那些将被忽略的文件。)



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

我希望我能投票支持两次,因为我不理解glob模式的区别——我认为它只是俚语,就像blob。它有点俚语,但它是非常具体的俚语。“Glob”是“global”的缩写。以俚语开头的单词经常变成俚语,如本例所示。行话很重要,但也有点有害,因为两个人可以使用不同的词语,并认为他们在交流,但事实并非如此,因为他们使用的是同一个词语,具有不同的行话含义。