一、为什么需要 Commit 规范?
- 统一风格:团队提交日志格式一致,避免“随便写”导致的信息混乱;
- 高效追溯:通过前缀快速识别提交目的(是新增功能?还是修复BUG?);
- 自动化工具:支持生成CHANGELOG、版本号自动语义化(如配合
standard-version)。
二、约定式提交(Conventional Commits)核心结构
提交信息需遵循固定格式,核心模板为:
<类型>(<范围>): <描述>
[可选:详细说明]
[可选:关联Issue/PR]
各部分说明:
- 类型:表示提交的核心目的(必填);
- 范围:指定修改的模块/页面/功能(可选,用括号包裹);
- 描述:简洁说明修改内容(必填,动词开头,不超过50字);
- 详细说明:复杂修改可补充多行文说明(可选);
- 关联信息:链接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