.gitignore 使用指南 - Python开发
📝 .gitignore 使用指南
Python 开发中的完整教程
什么是 .gitignore?
.gitignore 是一个文本文件,用于告诉 Git 哪些文件或文件夹不需要被版本控制。这对于排除临时文件、编译输出、敏感信息等非常有用。
基本语法规则
| 模式 | 说明 | 示例 |
|---|---|---|
filename.txt |
忽略特定文件 | config.py |
*.ext |
忽略所有该扩展名的文件 | *.pyc |
folder/ |
忽略整个文件夹 | pycache/ |
**/pattern |
匹配任意目录下的文件 | **/temp |
!filename |
不忽略某个文件(例外) | !important.log |
# |
注释行 | # 这是注释 |
Python 项目常用配置
1. 忽略 Python 编译文件
Python 字节码文件*.pyc *.pyo *.pyd __pycache__/ *.so# 编译的 Python 模块 *.py[cod] *$py.class
2. 忽略虚拟环境
虚拟环境目录venv/ env/ ENV/ .venv virtualenv/# PipenvPipfile.lock# Poetry poetry.lock
3. 忽略 IDE 和编辑器文件
PyCharm.idea/ *.iml# VSCode.vscode/ *.code-workspace# Jupyter Notebook.ipynb_checkpoints/ *.ipynb_checkpoints# Vim *.swp *.swo *~
4. 忽略测试和覆盖率文件
测试覆盖率.coverage .coverage.* htmlcov/ .pytest_cache/ .tox/# 单元测试 .pytest_cache/ nosetests.xml coverage.xml
5. 忽略日志和数据库文件
日志文件*.log logs/ *.log.*# 数据库文件 *.db *.sqlite *.sqlite3 db.sqlite3
6. 忽略环境变量和配置文件
环境变量.env .env.local .env.*.local# 配置文件(包含敏感信息) config.ini secrets.json credentials.json
实际使用示例
示例 1: 忽略单个文件
忽略根目录下的 config.pyconfig.py# 忽略任意目录下的 secret.json **/secret.json
示例 2: 忽略文件夹
忽略 data 文件夹及其所有内容data/# 忽略所有 temp 文件夹**/temp/# 忽略根目录的 build 文件夹,但不忽略子目录的 /build/
示例 3: 使用例外规则
忽略所有 .log 文件*.log# 但不忽略 important.log!important.log# 忽略 build 目录build/# 但保留 build/README.md !build/README.md
示例 4: 完整的 Python 项目 .gitignore
Python*.pyc __pycache__/ *.py[cod] *$py.class# 虚拟环境venv/ env/ .venv/# IDE.idea/ .vscode/ *.swp# 测试.pytest_cache/ .coverage htmlcov/# 环境变量.env .env.local# 数据库*.db *.sqlite3# 日志*.log logs/# 操作系统.DS_Store Thumbs.db# 项目特定 uploads/ downloads/ temp/
常见问题和技巧
❓ 如何忽略已经被追踪的文件?
如果文件已经被 Git 追踪,需要先从 Git 中移除:
移除单个文件git rm --cached filename.py# 移除整个文件夹git rm -r --cached foldername/# 然后提交更改 git commit -m "Remove tracked files"
💡 提示: 使用 --cached 参数只会从 Git 中删除文件,不会删除本地文件。
🔍 如何检查文件是否被忽略?
检查某个文件是否被忽略git check-ignore -v filename.py# 查看所有被忽略的文件 git status --ignored
📦 全局 .gitignore
你可以设置一个全局的 .gitignore 文件,应用于所有项目:
创建全局 gitignore 文件touch ~/.gitignore_global# 配置 Git 使用它 git config --global core.excludesfile ~/.gitignore_global
最佳实践
- 在项目开始时就创建 .gitignore 文件
- 永远不要提交敏感信息(密码、API密钥等)
- 忽略所有生成的文件(编译输出、缓存等)
- 使用注释让 .gitignore 文件更易读
- 可以参考 GitHub 的 gitignore 模板
- 团队协作时,将 .gitignore 文件纳入版本控制