// 开发工具 · 2025-03-22

Git Commit Message 规范:让提交记录清晰明了

一、为什么需要 Commit 规范?

  • 统一风格:团队提交日志格式一致,避免“随便写”导致的信息混乱;
  • 高效追溯:通过前缀快速识别提交目的(是新增功能?还是修复BUG?);
  • 自动化工具:支持生成CHANGELOG、版本号自动语义化(如配合standard-version)。

二、约定式提交(Conventional Commits)核心结构

提交信息需遵循固定格式,核心模板为:

<类型>(<范围>): <描述>

[可选:详细说明]

[可选:关联Issue/PR]

各部分说明:

  1. 类型:表示提交的核心目的(必填);
  2. 范围:指定修改的模块/页面/功能(可选,用括号包裹);
  3. 描述:简洁说明修改内容(必填,动词开头,不超过50字);
  4. 详细说明:复杂修改可补充多行文说明(可选);
  5. 关联信息:链接Issue号、PR号(可选,如Fixes #123)。

三、常用提交类型及示例

以下是约定式提交中主流类型的定义,搭配通用实践案例(含中英文对照):

类型前缀 含义(中英) 中文通用示例 英文通用示例
feat 新增功能(Feature) feat(支付): 新增微信支付方式 feat(checkout): add PayPal payment option
fix 修复BUG(Bug Fix) fix(登录): 修复验证码过期不提示的问题 fix(auth): resolve expired captcha no-notification issue
perf 性能优化(Performance) perf(列表): 优化接口请求逻辑,减少接口调用次数 perf(dashboard): optimize data fetching to reduce API calls
docs 文档修改(Documentation) docs(readme): 更新部署步骤说明 docs(contributing): update code review guidelines
style 代码格式调整(Style,不影响逻辑) style(按钮): 统一按钮样式的缩进规范 style(navbar): standardize indentation for CSS classes
refactor 代码重构(Refactor,不新增功能/修复BUG) refactor(工具函数): 拆分复杂的日期处理函数 refactor(utils): split complex date processing function
test 测试用例修改(Testing) test(用户接口): 补充用户注册接口的单元测试 test(user-api): add unit tests for user registration endpoint
chore 构建/工具链/依赖更新(Chore,不涉及业务代码) chore(deps): 升级webpack至5.80.0版本 chore(ci): configure GitHub Actions for automated testing
merge 分支合并(Branch Merge) Merge branch 'dev' into 'main' Merge branch 'feature/payment' into 'develop'

四、实践技巧与禁忌

1. 描述部分的写作技巧

  • 动词开头(中英对照) 中文用动作动词起头:修复/增加/减少/优化; 英文用实义动词开头:fix/add/reduce/optimize; ✅ 示例(中文):fix(登录页): 修复验证码过期无提示的问题 ✅ 示例(英文):feat(payment): add WeChat payment method
  • 避免模糊表述 ❌ 反面(中文):“改了点样式” ✅ 正面(中文):style(导航栏): 调整文字颜色与间距 ❌ 反面(英文):“update code” ✅ 正面(英文):refactor(api): simplify request parameter processing
  • 长度控制 描述不超过50字,复杂修改补充到“详细说明”部分; ✅ 示例(带详细说明):
    perf(首页): 优化轮播图加载逻辑
    详细说明:将轮播图资源改为懒加载,首屏仅加载当前帧,减少初始加载时间约30%

2. 范围部分的合理选择

范围需精准指向修改的模块,常见场景(中英对照):

  • 页面名 中文:author页面/首页;英文:login page/home page ✅ 示例:fix(author页面): 修复卡片与导航栏重叠bug ✅ 示例:style(home page): adjust button margin
  • 功能模块 中文:靶机展示/支付模块;英文:VM display/payment module ✅ 示例:feat(靶机展示): 增加骨架屏翻页动画 ✅ 示例:perf(payment module): reduce API request frequency
  • 文件/目录名 中文:utils/components/button;英文:utils/components/button ✅ 示例:refactor(utils): 拆分日期处理函数 ✅ 示例:test(components/button): add click event test cases

3. 禁忌

  • 禁用模糊类型 ❌ 中文:“update: 改了点内容” ❌ 英文:“modify: change some code” ✅ 替代:根据实际动作选类型,如fix/feat/perf
  • 不可省略类型 ❌ 中文:“修复BUG” ✅ 正确:fix: 修复表单提交失败的问题 ❌ 英文:“fix login error” ✅ 正确:fix(login): resolve login authentication failure
  • 避免堆砌无关信息 ❌ 示例:feat(列表): 增加排序功能,昨天加班到10点,今天终于写完了 ✅ 正确:feat(列表): 新增按时间/热度排序功能

原文 https://blog.csdn.net/2301_79518550/article/details/146297468