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

时间:2017-12-02 06:49:41

标签: git gitignore

我已经试过了两次,而且我得到了类似的结果。避风港找不到答案。

2 个答案:

答案 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文件的文件夹内的文件或文件夹。

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

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

.gitignore doc

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