.gitignore中a /与a / *和a / **之间的区别?

Tom*_*ion 2 git gitignore

这是我的文件夹。

  • 一种
    • b
      • b1.txt
      • b2.txt
    • a1.txt
    • a2.txt
  • .gitignore

首先:

我发现,如果我想忽略的文件夹中,a/并a/*和a/**所有可以完成。

其次:

我想忽略文件夹a中除文件夹b外的所有内容,唯一的方法是:

a/*
!a/b/
Run Code Online (Sandbox Code Playgroud)

我不知道为什么a/**不能这样做?

# this way can't except folder b
a/**
!a/b/
Run Code Online (Sandbox Code Playgroud)

或者您可以告诉我该如何使用a/**?

Vam*_*ire 6

**匹配任何数量的目录,*只有一个。
所以,如果你忽略例如/a/**/d/,然后/a/b/d/和/a/b/c/d/两个被忽略。
如果您忽略/a/*/d/,则/a/b/d/忽略,而/a/b/c/d/不会忽略。

如果一个文件夹被忽略,那么Git甚至不会查看其内容来检查是否包含。这就是为什么您不能忽略/a/然后包含它的原因/a/b/,因为Git甚至没有调查/a/。因此,您必须改为忽略/a/with中的所有内容/a/*,然后包括/a/b/来忽略其中的/a/所有内容,除了的所有内容/a/b/。