Gitignore 从入门到精通
Outline
在日常的 Git 版本控制中,.gitignore 文件是一个不可或缺的工具。它能帮助我们排除不需要跟踪的文件和目录,保持代码仓库的整洁。本文将深入解析 .gitignore 文件的语法规则,帮助你掌握这一重要工具的使用方法。
什么是 .gitignore 文件⌗
.gitignore 是一个纯文本文件,用于指定 Git 应该忽略哪些文件或目录。这些被忽略的文件不会被纳入版本控制,也不会出现在 git status 的输出中。这对于排除编译产物、日志文件、依赖包等临时文件特别有用。
基础语法规则⌗
1. 匹配模式⌗
.gitignore 文件中的每一行都是一个独立的匹配模式, 对于相对路径模式, 默认行为是递归匹配:
# 忽略所有目录下的以 .log 结尾的文件
*.log
# 忽略所有目录下的 build 子目录
build/
# 忽略所有目录下的 config.ini 文件
config.ini
2. 通配符使用⌗
*:匹配零个或多个任意字符?:匹配单个任意字符[]:匹配方括号内的任意一个字符
# 匹配所有目录下的以 .tmp 结尾的文件
*.tmp
# 匹配所有目录下的 test1.txt, test2.txt
test?.txt
# 匹配所有目录下的 file1.txt 和 file2.txt
file[12].txt
3. 目录指定⌗
- 以
/结尾的模式仅匹配目录 - 不以
/结尾的模式可匹配文件和目录
# 忽略所有目录下的 docs 子目录
docs/
# 忽略所有目录下的 temp 文件和 temp 目录
temp
4. 注释和空行⌗
- 以
#开头的行是注释 - 空行会被忽略
# 这是一个注释
# 忽略所有目录下的 .class 文件
*.class
# 空行会被跳过
*.jar
高级语法特性⌗
1. 模式否定⌗
以 ! 开头的模式表示否定,用于排除先前定义的忽略规则:
# 忽略所有目录下的以 .txt 结尾的文件
*.txt
# 不忽略任何目录下的 important.txt 文件
!important.txt
2. 目录递归匹配⌗
**/匹配任意层级的目录
# 忽略所有目录中以 .log 结尾的文件 与 *.log 默认行为一致
**/*.log
# 忽略所有目录中的 node_modules 目录, 与 node_modules/ 默认行为一致
**/node_modules/
3. 绝对路径和相对路径⌗
- 以
/开头的模式从仓库根目录开始匹配 - 不以
/开头的模式可匹配任意目录
# 仅忽略根目录中的 README 文件
/README
# 忽略所有目录中的 README 文件
README
实用示例⌗
常见的 .gitignore 配置⌗
# 编译产物
*.class
*.jar
*.war
*.ear
# 构建工具输出
target/
build/
dist/
# 依赖管理
node_modules/
vendor/
# 开发环境配置
.env
*.local
# 操作系统文件
.DS_Store
Thumbs.db
# IDE 文件
.vscode/
.idea/
*.swp
*.swo
# 日志文件
*.log
logs/
特定场景配置⌗
Python 项目:
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
Node.js 项目:
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
注意事项⌗
文件位置:
.gitignore文件通常放在仓库根目录,但也可以在子目录中创建,只影响该目录及其子目录已跟踪文件的处理:如果文件已经被 Git 跟踪,即使后来添加到
.gitignore中,Git 仍会继续跟踪。需要使用git rm --cached命令将其从索引中移除全局配置:可以创建全局的
.gitignore文件,作用于所有本地仓库:git config --global core.excludesfile ~/.gitignore_global模式优先级:后面的模式会覆盖前面的模式,特别是否定模式要放在对应规则之后
最佳实践⌗
项目特定的忽略规则 应该放在项目根目录的
.gitignore文件中个人开发环境相关的忽略规则 应该配置在全局
.gitignore中定期检查
.gitignore文件,确保没有遗漏重要文件团队协作时,确保所有成员使用相同的忽略规则
总结⌗
掌握 .gitignore 语法是高效使用 Git 的重要技能。通过合理配置忽略规则,可以避免不必要的文件进入版本控制,提高协作效率,保持仓库的整洁性。建议根据项目类型和开发环境,制定适合的 .gitignore 策略,并在团队中保持一致的使用规范。