我已经尝试了两种,我得到了类似的结果。一直未能找到答案。
前导和尾随斜杠都会对匹配的内容添加限制。
media
:如果没有斜杠,它将匹配当前目录和所有子目录中的文件和目录。media/
:添加尾部斜杠意味着它只匹配当前目录和所有子目录中的目录。 (不是文件)/media
:使用前导斜杠,它将匹配文件和目录,但仅限于当前目录。 (不是子目录)/media/
:使用前导和尾部斜杠,它只匹配当前目录中的“media”目录。 (不是文件而不是子目录).gitignore documentation在这些方面相当清楚:
/
指定目录或文件夹如果模式以斜杠结尾,则为了以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说,
foo/
将匹配目录foo
和它下面的路径,但不匹配常规文件或符号链接foo
(这与在git中一般的pathspec工作方式一致)。
对于media/
:这将匹配.gitignore文件所在目录中名为“media”的任何目录/文件夹或任何子目录。它不匹配名为“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”将不匹配。
默认情况下,gitignore模式是递归的,即它将忽略与包含.gitignore
文件的子文件夹中的模式匹配的文件或文件夹。
通过使用/
为模式添加前缀,可以禁用递归,并且模式仅适用于包含.gitignore
文件的文件夹内的文件或文件夹。
通过使用/
对模式进行后缀,您只创建匹配文件夹(而不是文件)。
如果将两者结合使用,则只匹配当前文件夹中的文件夹而不匹配子文件夹。
因此,如果当前目录中只有一个media
文件夹,则两个模式都将匹配,结果将相同。