Conventional Commits 通过标准化提交信息结构,让历史兼具可读性与机器可解析性,完美适配 SemVer。
核心结构
| |
必填:类型(type)和描述(description)
类型(type)
| 类型 | 作用 | SemVer |
|---|---|---|
| feat | 新增功能 | MINOR |
| fix | 修复 bug | PATCH |
| docs | 文档更新 | - |
| style | 代码格式(不影响逻辑) | - |
| refactor | 重构(非新功能/非修复) | - |
| perf | 性能优化 | - |
| test | 测试相关 | - |
| build | 构建相关 | - |
| ci | CI 流程变更 | - |
| chore | 日常琐事 | - |
范围(scope)
可选,用括号包裹,限定变更模块:
feat(parser): 添加日语支持fix(api): 修复登录 bug
破坏性变更
对应 SemVer MAJOR 版本:
| 方式 | 示例 |
|---|---|
类型后加 ! | feat!: 移除旧版登录接口 |
| 脚注声明 | BREAKING CHANGE: 登录接口路径变更为 /v2/login |
示例
| |
核心优势
- 自动化支撑:自动生成 CHANGELOG、计算版本号
- 协作效率:变更意图一目了然
- 流程联动:触发自动化构建、发布
常见问题
- 初始开发阶段需要遵守吗? 需要,协作成员需通过提交信息了解变更
- 类型大小写敏感吗? 不敏感,但建议团队保持一致(推荐小写)
- 一个提交符合多种类型? 拆分提交,保持单一职责
- 提交类型用错了怎么办? 合并前用
git rebase -i编辑;已发布则无需修改
张芷铭的个人博客
Comments