一、.gitignore 文件介绍
在使用 Git 进行版本控制时,.gitignore
文件是一个非常重要的配置文件,用于告诉 Git 哪些文件或目录不需要被追踪和提交到版本库中。合理使用 .gitignore
文件可以避免提交不必要的文件,如临时文件、编译生成的文件、日志文件、敏感信息等,从而保持版本库的整洁和高效。
使用 Git 的相信都经常看到这一个文件,当我们上传代码时候一些本地配置不想提交到线上的时候,我们一般都会有一个 .gitignore
文件。
二、基本语法规则
.gitignore
文件使用简单的文本格式,每行定义一个忽略规则。
常见的语法规则如下:
- 注释:以
#
开头的行是注释,会被 Git 忽略。
# 这是一个注释,忽略所有 .log 文件
*.log
- 忽略文件 / 目录:直接指定文件名或目录名。
# 忽略单个文件
temp.txt
# 忽略整个目录(包括子目录)
target/
- 通配符:
-
*
:匹配任意数量的任意字符(不包括路径分隔符/
)**
:递归匹配任意目录?
:匹配单个任意字符[]
:匹配方括号内指定的任意一个字符
# 忽略所有 .tmp 文件
*.tmp
# 忽略 build 目录下的所有 .class 文件
build/*.class
# 递归忽略所有 node_modules 目录
**/node_modules/
# 忽略所有以 test 开头的文件
test*
# 忽略所有 .pdf 或 .docx 文件
*.pdf
*.docx
- 取反规则:以
!
开头的规则表示不忽略(即使前面的规则已经忽略了该文件)。
# 忽略所有 .txt 文件,但不忽略 important.txt
*.txt
!important.txt
- 路径匹配:
-
- 没有斜杠:匹配当前目录及所有子目录中的文件
- 以
/
开头:只匹配仓库根目录下的文件 - 以
/
结尾:只匹配目录
# 只忽略根目录下的 config.ini
/config.ini
# 忽略所有 src 目录下的 .swp 文件
src/*.swp
# 忽略 doc 目录(无论在何处)
doc/
三、常用场景示例
以下是一些常见项目中可能需要添加到 .gitignore
的规则:
# 操作系统生成的文件
.DS_Store
Thumbs.db
# 编译生成的文件
target/
build/
dist/
*.class
*.jar
*.pyc
*.o
*.a
# 依赖缓存
node_modules/
vendor/
.gradle/
# 日志文件
*.log
logs/
# 配置文件(敏感信息)
config.local.json
secrets.properties
# IDE/编辑器文件
.idea/
.vscode/
*.iml
四、全局忽略配置
除了在项目中使用 .gitignore
文件,还可以配置全局的忽略规则,这些规则将应用于所有 Git 仓库:
- 创建一个全局忽略文件(例如
~/.gitignore_global
):
touch ~/.gitignore_global
- 编辑该文件,添加你希望全局忽略的规则:
# 全局忽略 macOS 和 Windows 系统文件
.DS_Store
Thumbs.db
# 全局忽略编辑器备份文件
*~
- 配置 Git 使用这个全局忽略文件:
git config --global core.excludesfile ~/.gitignore_global
五、强制添加被忽略的文件
如果需要强制添加某个被 .gitignore
忽略的文件,可以使用 -f
选项:
git add -f ignored_file.txt
六、刷新已忽略的文件
如果修改了 .gitignore
文件,需要刷新缓存以应用新的规则:
git rm -r --cached . # 移除缓存
git add . # 重新添加所有文件
git commit -m "Update .gitignore" # 提交更改
七、总结
合理使用 .gitignore
文件是 Git 版本控制的重要实践,它可以帮助你:
- 避免提交不必要的文件,保持版本库整洁
- 保护敏感信息不被泄露
- 提高团队协作效率
- 减少冲突和错误