-
每行一个规则:每行只能包含一个规则,多个规则需要分别写在不同的行上。
示例:
# 忽略日志文件 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