如果我在 .gitignore
文件中使用前导斜杠来放置一个模式,这个斜杠是指 .gitignore
文件所在的目录,还是指整个代码库的根目录?
(我找到的手册都隐藏了这些细节信息。)
这是我的猜测:
- 前导斜杠匹配路径名的开头。例如,“ / * .c”匹配“ cat-file.c”,但不匹配“ mozilla-sha1 / sha1.c”。
如果您使用仓库内的.gitignore
,则其中.gitignore
所在的目录 - 使其相对于存储库根目录并不实用。
通过在存储库根目录和子目录中使用相同命名的文件以及在此同一目录中使用.gitignore
进行的简短实验证实了这一点。
如果您使用.git/info/exclude
或core.excludesfile
,我认为它相对于存储库根目录。
也可以通过相同测试(对于info/exclude)进行确认(1.7.3.4上的两次测试均有此结果)。
可以说,为了清晰起见,此事实可能已在上述后期再次重复引用。
- [...]
- 从与路径相同的目录中读取的模式的
.gitignore
文件,或者在任何父目录中,具有更高级别文件(直到工作树的顶层)中的模式被覆盖 从低级别文件到包含该文件的目录。 这些模式相对于.gitignore
文件的位置进行匹配。项目通常在其存储库中包括这些.gitignore
文件,其中包含作为项目构建的一部分生成的文件的模式。- [...]
man gitignore
中的 "Description" 部分中,指出 ".gitignore" 文件中包含的模式。这些模式是相对于 .gitignore 文件所在的位置进行匹配的。请注意,此处不提供解释。 - Schnouki