.gitignore文件中/ media和media /之间有什么区别?

问题描述 投票:3回答:2

我已经尝试了两种,我得到了类似的结果。一直未能找到答案。

git gitignore
2个回答
4
投票

前导和尾随斜杠都会对匹配的内容添加限制。

  • 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”将不匹配。


3
投票

默认情况下,gitignore模式是递归的,即它将忽略与包含.gitignore文件的子文件夹中的模式匹配的文件或文件夹。

通过使用/为模式添加前缀,可以禁用递归,并且模式仅适用于包含.gitignore文件的文件夹内的文件或文件夹。

通过使用/对模式进行后缀,您只创建匹配文件夹(而不是文件)。

如果将两者结合使用,则只匹配当前文件夹中的文件夹而不匹配子文件夹。

.gitignore doc

因此,如果当前目录中只有一个media文件夹,则两个模式都将匹配,结果将相同。

© www.soinside.com 2019 - 2024. All rights reserved.