Git 提交约定详解
Git 提交约定详解
概述
Git 提交约定是一种统一的提交信息格式规范,帮助团队更好地理解代码变更历史,提高协作效率。最流行的规范是 Conventional Commits。
提交类型(Type)
1. feat - 新功能
表示新增功能或改进现有功能。
# 添加新功能
git commit -m "feat: 添加用户登录功能"
# 改进现有功能
git commit -m "feat: 支持导出为 PDF 格式"
适用场景:
- 新增 API 接口
- 新增用户界面组件
- 添加新的业务逻辑
- 扩展现有功能
2. fix - 修复 Bug
表示修复了问题或错误。
# 修复页面显示问题
git commit -m "fix: 修复登录页面在 Safari 上的显示问题"
# 修复代码逻辑错误
git commit -m "fix: 修复数组越界异常"
适用场景:
- 修复功能缺陷
- 修复性能问题
- 修复安全问题
- 修复兼容性问题
3. perf - 性能优化
表示提升了性能,但不改变功能。
# 优化数据库查询
git commit -m "perf: 优化数据库查询,减少 N+1 问题"
# 缓存静态资源
git commit -m "perf: 缓存静态资源,减少请求次数"
适用场景:
- 数据库查询优化
- 算法复杂度降低
- 缓存策略优化
- 资源加载优化
- 减少内存占用
4. docs - 文档更新
表示更新了文档或注释。
# 更新 README
git commit -m "docs: 更新 README 安装说明"
# 添加代码注释
git commit -m "docs: 添加 API 接口注释"
适用场景:
- 更新项目文档
- 添加代码注释
- 更新 API 文档
- 更新 CHANGELOG
5. style - 代码格式
表示不影响功能代码的格式调整。
# 统一代码格式
git commit -m "style: 格式化代码,统一缩进为 2 空格"
# 调整 import 顺序
git commit -m "style: 调整 import 顺序"
适用场景:
- 代码格式化
- 缩进调整
- 空格/换行调整
- 注释格式调整
6. refactor - 重构
表示重构代码,不改变功能。
# 提取公共方法
git commit -m "refactor: 提取公共方法到 utils 文件"
# 重构组件结构
git commit -m "refactor: 重构组件结构,提高可维护性"
适用场景:
- 代码结构优化
- 提取公共代码
- 重命名变量/函数
- 模式重构
- 架构优化
7. test - 测试相关
表示添加或修改测试代码。
# 添加单元测试
git commit -m "test: 添加单元测试覆盖"
# 修复测试用例
git commit -m "test: 修复测试用例断言错误"
适用场景:
- 添加单元测试
- 添加集成测试
- 修改测试代码
- 更新测试数据
8. chore - 构建/工具链
表示构建过程或辅助工具的变更。
# 升级依赖包
git commit -m "chore: 升级依赖包版本"
# 更新构建脚本
git commit -m "chore: 更新构建脚本"
# 配置代码规范工具
git commit -m "chore: 配置 prettier 和 eslint"
适用场景:
- 升级依赖包
- 更新构建配置
- 配置 CI/CD
- 工具链升级
9. ci - CI/CD
表示持续集成/部署配置的变更。
# 添加自动部署
git commit -m "ci: 添加 GitHub Actions 自动部署流程"
# 优化构建时间
git commit -m "ci: 优化 CI 构建时间"
适用场景:
- 添加 CI 流程
- 优化 CI 配置
- 添加自动部署
- 修改流水线配置
10. revert - 回退
表示回退之前的提交。
# 回退指定提交
git commit -m "revert: 回退 commit 3438d29"
适用场景:
- 回退错误提交
- 撤销功能变更
提交格式
完整的提交信息格式:
<type>(<scope>): <subject>
<body>
<footer>
Scope(范围)
表示变更影响的模块或范围。
feat(auth): 添加 OAuth2 登录支持
fix(user): 修复用户头像上传失败问题
perf(db): 优化查询索引
Subject(主题)
- 使用祈使句,如
"添加"而不是"添加了" - 首字母小写
- 末尾不加句号
# ✅ 正确
feat: 添加用户登录功能
fix: 修复登录页面显示问题
# ❌ 错误
feat: 添加用户登录功能。 # 有句号
Fix: 修复登录页面显示问题 # 首字母大写
Body(正文)
可选,详细说明变更原因和影响。
feat(auth): 添加 OAuth2 登录支持
- 支持微信登录
- 支持 GitHub 登录
- 更新登录页面 UI
Footer(脚注)
可选,用于关联 Issue 或 Breaking Changes。
fix(api): 修复分页接口参数错误
Closes #123
BREAKING CHANGE: 分页接口参数格式已变更,请更新客户端代码
完整示例
# 简单提交
git commit -m "feat: 添加用户管理模块"
# 带范围的提交
git commit -m "feat(user): 添加用户权限管理功能"
# 带详细说明的提交
git commit -m "feat(api): 添加用户导出功能
- 支持 CSV 格式导出
- 支持自定义导出字段
- 添加导出进度提示
Closes #456"
工具推荐
Commitlint
自动检查提交信息是否符合规范。
npm install -g @commitlint/cli @commitlint/config-conventional
echo "export COMMITLINT_ENABLE=true" >> ~/.zshrc
Commitizen
交互式提交工具,避免忘记提交类型。
npm install -g commitizen cz-conventional-changelog
echo "export COMMIT_GEN_ENABLE=true" >> ~/.zshrc
Husky
Git hooks 工具,在提交前自动检查。
npm install -D husky lint-staged
npx husky install
npx husky add .husky/commit-msg "npx --no -- commitlint --edit \$1"
评论