-
每行一个规则:每行只能包含一个规则,多个规则需要分别写在不同的行上。
示例:
# 忽略日志文件 logs/ # 忽略临时文件 temp.txt
-
种类匹配:
- 文件:在规则的开头指定文件名或路径,如
file.txt
。
示例:
# 忽略文件 file.txt file.txt # 忽略同名目录或者文件(不论嵌套) dist
- 目录:在规则的开头用斜杠
/
指定目录名或路径,如/dir/
。
示例:
# 忽略目录 dir(从当前目录出发寻找) /dir/# 忽略目录或者文件 dir(从当前目录出发寻找) dir # 忽略目录或者文件 dir(从当前目录出发寻找) /dir
-
通配符:
*
:匹配任意数量(0个或多个)的字符,但不包括路径分隔符(斜杠)。
示例:
# 忽略所有 .txt 结尾的文件 *.txt
?
:匹配单个字符,但不包括路径分隔符。
示例:
# 忽略 a.txt 或 aa.txt,但不忽略 aatxt a?.txt
**
:匹配任意数量的字符,包括路径分隔符。可用于匹配子目录和嵌套目录。
示例:
# 忽略所有的 .txt 文件,无论它们在哪个目录下 **/*.txt # 从当前目录出发,忽略a目录下的.jpg(不含嵌套) /a/*.jpg # 从当前目录出发,忽略a目录下的所有.jpg(含嵌套) /a/**/*.jpg
-
斜杠
/
:用于指定匹配相对于 .gitignore 文件所在位置的路径。
示例:
# 忽略当前目录下的 notes.txt 文件 /notes.txt
- 文件:在规则的开头指定文件名或路径,如
-
注释:
- 使用
#
标记注释行,注释行将被忽略。
示例:
# 这是一个注释
- 使用
-
反转规则:使用
!
前缀。如果规则以!
开头,则表示不忽略匹配的文件或目录。(一般用于保留之前已经匹配忽略的文件或目录)示例:
# 忽略所有 .txt 文件,但不忽略 important.txt *.txt !important.txt
此实例表示忽略upload 目录下的所有文件,但是我们此时想要保留该目录,所有可以指定一个文件 .gitkeep,然后保留该目录下的 .gitkeep 文件,也就是保留了该目录。 -
行尾斜杠
/
:如果规则以/
结尾,则该规则将匹配目录而非文件。示例:
# 忽略整个 logs 目录 logs/
-
递归通配符
**
:递归地匹配任意路径段,包括子目录和嵌套目录,例如/dir/**/*.txt
。示例:
# 忽略 dir 目录及其子目录下的所有 .txt 文件 /dir/**/*.txt
-
忽略空目录:.gitignore 文件本身无法忽略空目录,因为 Git 不跟踪空目录。但你可以在目录中创建一个 .gitkeep 文件,使 Git 跟踪该目录。
示例:
# 忽略空目录 /emptydir/.gitkeep
请注意,.gitignore 规则基于模式匹配,并且相对于 .gitignore 文件的位置。
参考 Git 官方文档以获取更多信息:https://git-scm.com/docs/gitignore