在`.gitignore`文件中,前导斜杠的含义是什么?

32

如果我在 .gitignore 文件中使用前导斜杠来放置一个模式,这个斜杠是指 .gitignore 文件所在的目录,还是指整个代码库的根目录?

(我找到的手册都隐藏了这些细节信息。)

1个回答

31
这是文档文本
  • 前导斜杠匹配路径名的开头。例如,“ / * .c”匹配“ cat-file.c”,但不匹配“ mozilla-sha1 / sha1.c”。
这是我的猜测:
  • 如果您使用仓库内的.gitignore,则其中.gitignore所在的目录 - 使其相对于存储库根目录并不实用。

    通过在存储库根目录和子目录中使用相同命名的文件以及在此同一目录中使用.gitignore进行的简短实验证实了这一点。

  • 如果您使用.git/info/excludecore.excludesfile,我认为它相对于存储库根目录。

    也可以通过相同测试(对于info/exclude)进行确认(1.7.3.4上的两次测试均有此结果)。

Schnouki找到了关于此事的正确文档部分(强调是我的):
  • [...]
  • 从与路径相同的目录中读取的模式的.gitignore文件,或者在任何父目录中,具有更高级别文件(直到工作树的顶层)中的模式被覆盖 从低级别文件到包含该文件的目录。 这些模式相对于.gitignore文件的位置进行匹配。项目通常在其存储库中包括这些.gitignore文件,其中包含作为项目构建的一部分生成的文件的模式。
  • [...]
可以说,为了清晰起见,此事实可能已在上述后期再次重复引用。

我已经阅读了文档。但问题是,相对于什么路径名?我讨厌那该死的 Git 文档。如果进行过测试,那么你的未经测试的猜测可能会更有价值。 - Norman Ramsey
5
man gitignore 中的 "Description" 部分中,指出 ".gitignore" 文件中包含的模式。这些模式是相对于 .gitignore 文件所在的位置进行匹配的。请注意,此处不提供解释。 - Schnouki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接