我已经试过了两次,而且我得到了类似的结果。避风港找不到答案。
答案 0 :(得分:4)
前导斜杠和尾随斜杠都会对匹配的内容添加限制。
media
:如果没有斜杠,它将匹配当前目录和所有子目录中的文件和目录。media/
:添加尾部斜杠意味着它只匹配当前目录和所有子目录中的目录。 (不是文件)/media
:使用前导斜杠,它将匹配文件和目录,但仅限于当前目录。 (不是子目录)/media/
:同时使用前导和尾随斜杠,它只匹配目录" media"在当前目录中。 (不是文件而不是子目录).gitignore documentation在这些方面相当清楚:
/
指定目录或文件夹如果模式以斜杠结尾,则为了以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说,
foo/
将匹配目录foo
和其下的路径,但不匹配常规文件或符号链接foo
(这与pathspec工作方式一致)一般在Git)。
对于media/
:这将匹配任何名为" media"的目录/文件夹。在 .gitignore 文件所在的目录或任何子目录中。它不会匹配名为" media"的文件。例如," media / foo.c"和" bar / media / foo.c"将匹配,但文件" foobar / media"不会。
/
指定必须在当前目录前导斜杠与路径名的开头匹配。例如," / *。c"匹配" cat-file.c"但不是" mozilla-sha1 / sha1.c"。
/media
:
/media
将匹配 .gitignore 文件所在目录中的所有文件路径,其中开始与media
。它不会匹配子目录中的路径,这些路径恰好包含" media",但它不是以" media"在当前目录中。例如," media / foo.c"会匹配,但" foo / media / bar.c"不会。
答案 1 :(得分:3)
默认情况下,gitignore模式是递归的,即它将忽略与包含.gitignore
文件的子文件夹中的模式匹配的文件或文件夹。
通过使用/
为模式添加前缀,可以禁用递归,并且模式仅适用于包含.gitignore
文件的文件夹内的文件或文件夹。
通过使用/
后缀模式,您只创建匹配文件夹(而不是文件)。
如果两者结合使用,则只匹配当前文件夹中的文件夹而不匹配任何子文件夹。
因此,如果当前目录中只有一个media
文件夹,则两种模式都匹配,结果将相同。