什么是 .gitignore?
.gitignore 是 Git 版本控制系统中的一个配置文件,用于指定哪些文件或目录不应该被 Git 跟踪和提交到代码仓库中。
为什么需要 .gitignore?
在开发过程中,我们经常会产生一些不需要版本控制的文件:
- 编译生成的文件:
.exe,.o,.class,dist/,build/ - 依赖目录:
node_modules/,vendor/ - IDE配置文件:
.idea/,.vscode/,*.iml - 日志文件:
*.log,logs/ - 临时文件:
*.tmp,.DS_Store,Thumbs.db - 敏感信息: 配置文件包含密码、API密钥等
基本语法
# 这是注释,以 # 开头
# 忽略所有 .log 文件
*.log
# 忽略 node_modules 目录
node_modules/
# 忽略所有 .tmp 文件,但不忽略 important.tmp
*.tmp
!important.tmp
# 忽略 build 目录下的所有文件
build/
# 忽略所有以 temp 开头的文件
temp*
# 忽略 doc 目录下的 .txt 文件,但不忽略 doc/server/ 下的 .txt 文件
doc/*.txt
# 只忽略当前目录下的 config.ini,不忽略子目录下的 config.ini
/config.ini
常见项目的 .gitignore 模板
Python 项目
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# Virtual environments
venv/
ENV/
env/
# IDE
.idea/
.vscode/
*.swp
*.swo
# Testing
.tox/
.coverage
htmlcov/
.pytest_cache/
# Jupyter Notebook
.ipynb_checkpoints
Node.js 项目
# Dependencies
node_modules/
# Build output
dist/
build/
# Logs
logs/
*.log
npm-debug.log*
# Environment variables
.env
.env.local
.env.*.local
# IDE
.idea/
.vscode/
*.swp
# OS
.DS_Store
Thumbs.db
# Testing
coverage/
.nyc_output/
Rust 项目
# Build
target/
Cargo.lock
# IDE
.idea/
.vscode/
*.iml
# OS
.DS_Store
Thumbs.db
# Documentation
doc/
最佳实践
- 尽早创建: 在项目初始化时就创建
.gitignore文件 - 团队统一: 确保团队成员使用相同的忽略规则
- 不要忽略重要文件: 小心使用通配符,避免误忽略
- 定期审查: 随着项目发展,更新
.gitignore规则 - 使用模板: GitHub 提供了各种语言的 gitignore 模板
常用操作
# 检查哪些文件被忽略了
git check-ignore -v filename
# 强制添加被忽略的文件
git add -f filename
# 清除已跟踪但现在在 .gitignore 中的文件
git rm -r --cached .
git add .
git commit -m "更新 .gitignore"
总结
合理使用 .gitignore 可以保持代码仓库的整洁,避免提交不必要的文件,提高团队协作效率。
最后更新: 2024-07-17