3 回答
TA贡献1786条经验 获得超13个赞
模式格式
空行不匹配任何文件,因此它可以作为可读性的分隔符。
以开头的行
#
作为注释。一个
!
否定模式的可选前缀; 之前模式排除的任何匹配文件将再次包含在内。如果否定模式匹配,则将覆盖较低优先级模式源。如果模式以斜杠结尾,则为了以下描述的目的将其删除,但它只会找到与目录的匹配项。换句话说,
foo/
将匹配foo
它下面的目录和路径,但不匹配常规文件或符号链接foo
(这与在git中一般使用pathspec的方式一致)。如果模式不包含斜杠
/
,git会将其视为shell glob模式,并检查相对于.gitignore
文件位置的路径名的匹配(相对于工作树的顶层,如果不是来自.gitignore
文件)。否则,git将模式视为适合使用的shell glob,
fnmatch(3)
并带有FNM_PATHNAME
标志:模式中的通配符/
与路径名中的a不匹配。例如,Documentation/*.html
匹配Documentation/git.html
但不是Documentation/ppc/ppc.html
或tools/perf/Documentation/perf.html
。前导斜杠与路径名的开头匹配。例如,
/*.c
匹配cat-file.c
但不匹配mozilla-sha1/sha1.c
。
你可以在这里找到更多
git help gitignore
要么man gitignore
TA贡献1856条经验 获得超5个赞
包含斜杠的路径被认为是相对于包含.gitignore文件的目录 - 通常是存储库的顶层,但您也可以将它们放在子目录中。
所以,因为在你提供的所有例子中,路径都包含斜杠,两个版本是相同的。只有在路径中没有一个时,才需要设置一个前导斜杠。例如,要仅在存储库的顶级忽略foo,请使用/foo
。简单地写入foo
会忽略存储库中任何名为foo的内容。
你的通配符也是多余的。如果要忽略整个目录,只需将其命名为:
lib/model/om
使用通配符的唯一原因是,如果您打算随后忽略目录中的某些内容:
lib/model/om/* # ignore everything in the directory! lib/model/om/foo # except foo
- 3 回答
- 0 关注
- 1316 浏览
添加回答
举报