Git 版本控制:.gitignore 文件完全指南
.gitignore
文件是 Git 版本控制系统中的一个重要配置文件,用于告诉 Git 哪些文件和目录应该被忽略,不需要纳入版本控制。以下是关于 .gitignore 的完整笔记。
基本概念
.gitignore
文件可以放在项目的任何目录下,其作用范围包括所在目录及其所有子目录。最常见的做法是将它放在项目的根目录下。
基本语法规则
- 每行一个忽略规则
- 空行会被忽略
- 以
#
开头的行为注释 - 末尾的空格会被忽略
- 使用标准的 glob 模式匹配
通配符说明
*
- 匹配除斜杠以外的任意多个字符?
- 匹配除斜杠以外的任意一个字符**
- 匹配任意中间目录[abc]
- 匹配括号内的任意一个字符[0-9]
- 匹配括号内的任意一个数字!
- 取反,不忽略某个文件
常用匹配模式示例
# 忽略特定文件
config.ini
password.txt
# 忽略特定类型文件
*.log
*.tmp
*.swp
# 忽略特定目录
node_modules/
dist/
build/
# 忽略特定目录下的特定文件
logs/*.log
build/*.js
# 忽略所有位置的特定目录
**/temp/
**/logs/
# 不忽略特定文件
!important.log
常见项目类型的标准配置
Python 项目
__pycache__/
*.py[cod]
*$py.class
.Python
env/
venv/
.env
.ipynb_checkpoints
Node.js 项目
node_modules/
npm-debug.log
yarn-debug.log
yarn-error.log
.env
.env.local
Java 项目
*.class
*.jar
target/
.settings/
.classpath
.project
.idea/
实用技巧
1. 对已跟踪文件的处理
如果文件已被 Git 跟踪,添加到 .gitignore 后需要:
git rm --cached <file> # 从 Git 仓库中删除文件但保留在本地
git rm --cached -r <directory> # 对目录进行同样的操作
2. 查看忽略规则
git status --ignored # 查看被忽略的文件
git check-ignore -v <file> # 查看哪条规则忽略了某个文件
3. 全局忽略文件
可以配置全局的 .gitignore 文件:
git config --global core.excludesfile ~/.gitignore_global
最佳实践
- 在项目初始就创建 .gitignore 文件
- 根据项目类型选择合适的忽略规则
- 及时更新 .gitignore 文件
- 针对不同开发环境添加相应的忽略规则
- 不要忽略项目配置文件的模板
常见错误处理
-
如果 .gitignore 规则不生效,可能是因为:
- 文件已经被跟踪
- 规则语法错误
- 规则顺序问题
-
解决方法:
- 清除 Git 缓存:
git rm -r --cached .
- 重新添加文件:
git add .
- 提交更改:
git commit -m "update .gitignore"
- 清除 Git 缓存: