Git 提交约定详解 WhatCable:让 Mac 识别 USB-C 线缆能力的菜单栏神器 zoxide & fzf 安装与使用指南(终端提效神器) IDEA快捷键(Mac) MyBatis源码深度解析 ThreadLocal异步场景问题解析 Spring IOC与AOP详解 Spring源码中的设计模式详解 HashMap源码分析 java语法糖详解 Trae-Java环境配置 欢迎来到我的博客 为什么Java中只有值传递? 关于技术分享 代码之美 首页美化教程 如何创建GitHub个人网站
← 返回首页

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

可选,用于关联 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"

参考资源

评论