.gitignore
文件用于指定 Git 应忽略的文件或文件夹的匹配规则。以下是其语法规则和示例说明:
基本格式规则
-
每行一个规则:每个忽略规则单独占一行。
-
空行和注释:
-
空行会被忽略。
-
以
#
开头的行是注释(除非用\#
转义)。
-
-
通配符:
-
*
:匹配任意字符(除了路径分隔符/
)。 -
**
:匹配多级目录(如a/**/b
匹配a/b
、a/x/b
、a/x/y/b
)。 -
?
:匹配单个字符。
-
-
路径分隔符:
-
/
开头:仅匹配项目根目录下的文件(如/build
仅忽略根目录下的build
文件)。 -
/
结尾:仅匹配目录(如logs/
会忽略logs
目录,但不会忽略名为logs
的文件)。
-
-
取反规则:
-
!
开头:排除已忽略的文件(优先级高于忽略规则)。
-
具体示例
1. 忽略所有 .log
文件
*.log
-
忽略所有路径下的
.log
文件(如debug.log
、logs/error.log
)。
2. 忽略 build
目录
build/
总结
规则类型 | 示例 | 作用 |
---|---|---|
忽略文件类型 | *.log | 忽略所有 .log 文件 |
忽略目录 | build/ | 忽略所有 build 目录 |
根目录匹配 | /temp | 仅忽略根目录的 temp |
排除文件 | !important.txt | 不忽略 important.txt |
多级目录匹配 | **/bin/ | 忽略所有层级的 bin 目录 |
-
忽略所有名为
build
的目录及其内容(如build/
、src/build/
)。3. 忽略根目录下的
temp
文件/temp
-
仅忽略项目根目录下的
temp
文件(如/temp
),但不会忽略src/temp
。 -
4. 忽略所有
.txt
文件,但保留important.txt
*.txt # 忽略所有 .txt 文件
!important.txt # 排除 important.txt
5. 忽略
node_modules
目录node_modules/
-
忽略所有层级的
node_modules
目录(如node_modules/
、src/node_modules/
)。 -
6. 忽略特定文件类型
# 忽略所有 .tmp 和 .bak 文件
*.tmp
*.bak
7. 忽略隐藏文件/目录
# 忽略所有隐藏文件(如 .DS_Store、.env)
.*
# 但保留 .gitignore
!.gitignore
8. 匹配多级目录
# 忽略所有 .tmp 和 .bak 文件
*.tmp
*.bak
完整示例文件
-
# 忽略日志文件
*.log# 忽略构建目录
build/
dist/
bin/
obj/# 忽略 IDE 配置文件
.idea/
.vscode/# 忽略依赖目录
node_modules/
vendor/# 忽略系统文件
.DS_Store
Thumbs.db# 排除特定文件(优先级高于忽略规则)
!src/config/important.config -
注意事项
-
路径分隔符:Windows 中路径使用
/
(如logs/
,而非logs\
)。 -
已跟踪文件:如果文件已被 Git 跟踪,需先执行
git rm --cached <file>
停止跟踪。 -
全局忽略:可配置全局忽略规则(
git config --global core.excludesfile ~/.gitignore_global
)。 -
优先级:
.gitignore
的规则按文件中的顺序从上到下应用。