注释行以#
开头。
空格
不匹配任意文件。它可用反斜杠转义获得,比如当文件名中包含空格时,可以用\空格
(\
为转义符)表示空格
。
!
开头的匹配规则表示否定含义,即该匹配规则匹配的文件会再次被git包含在内。有一个例外,当在!
开头的匹配规则之前,已将包含该文件的目录忽略时,则该!
开头的匹配规则不生效(无论它们在哪里定义。先来后到?)。
所有路径都是相对于.gitignore
文件的。
斜线/
用作目录分隔符。分隔符可能出现在.gitignore
匹配规则的开头、中间或结尾。
匹配规则中不包含分隔符(/
)时,该匹配规则应用在低于该.gitignore级别的任何级别。比如*.tmp
,可能匹配到/
、/
、/a/
、/a/b/
。
匹配规则开头或中间包含分隔符(/
)时,该匹配规则为相对路径,且应用在该.gitignore级别。比如/
,匹配到/
;
,匹配到/
。
匹配规则末尾包含分隔符(/
)时,该匹配规则只匹配目录,否则模式可以匹配文件和目录。比如doc/frotz/
匹配doc/frotz
目录,但不匹配a/doc/frotz
目录;frotz/
匹配frotz
、a/frotz
、a/b/frotz
目录。
星号“ *
”匹配任何内容(任意多个任何字符)。
匹配规则开头包含2个星号(**
)时,该匹配规则在低于该.gitignore级别的任何级别匹配。例如, **/foo
在当前目录或子目录匹配foo
文件或目录(与 foo
等效)。**/foo/bar
在当前目录或子目录匹配foo/bar
文件或目录(与 foo/bar
不等效)。
匹配规则末尾包含斜杠+2个星号
(/**
)时,该匹配规则匹配所有内容。例如,“ abc/**”匹配 abc
目录内的所有文件及abc
子目录内的所有文件,无限深度。
匹配规则中间包含斜杠+2个星号
(/**
)时,该匹配规则匹配零个或多个目录。例如, a/**/b
匹配a/b
、a/x/b
、 a/x/y/b
等。
字符“ ?
”匹配除分隔符(/
)之外的任何一个字符。
范围表示法,例如[a-zA-Z]
,可用于匹配范围中的任何一个字符。