首页/开发/CI/CD 与发布速查/约定式提交(Conventional Commits)
工具链要点63 条

约定式提交(Conventional Commits)

提交信息采用「类型(范围): 描述」格式:机器可解析,可据此生成变更日志与推断版本号,支撑自动化发布。

CI/CD 与发布速查开发更新于 2026-10-13

约定式提交是什么

提交信息采用「类型(范围): 描述」的机器可解析格式:据此生成变更日志、推断语义化版本、驱动自动化发布。约定本身很轻,靠工具落地:commitlint 在提交或 CI 阶段校验格式,semantic-release、release-please 等工具消费提交生成版本号与发布说明。破坏性变更用类型后的感叹号或页脚 BREAKING CHANGE 显式标注,发布工具据此把主版本号加一。

基本信息

格式type(scope): subject
常用类型feat、fix、docs、chore、refactor、perf、test、ci、build
版本语义feat 对应次版本、fix 对应修订号(配合发布工具生效)
破坏性变更类型后加感叹号或页脚 BREAKING CHANGE
常用工具commitlint 校验、semantic-release、release-please
落地位置本地钩子与 CI 双重校验,防止绕过

典型使用场景

  • 自动生成变更日志:按类型分组,输出用户能读懂的发布说明
  • 版本号自动化:从提交推断下一版本,不再手工决定
  • 发布流水线触发:合并主干后自动打标签与发布
  • 评审效率:提交按类型归类,评审人快速判断变更性质
  • 变更审计:按类型检索提交,定位「什么时候引入的那次修复」
  • 新人友好:模板与校验让新人第一次提交就符合约定

提交示例

提交示例
feat(api): 支持批量导入订单
fix(cart): 修复优惠券重复计算
docs: 更新部署说明
refactor(core)!: 重写配置加载   # 感叹号表示破坏性变更

BREAKING CHANGE: 删除旧版接口 /v1/orders

类型与版本影响

类型含义版本影响
feat新功能次版本号加一
fix缺陷修复修订号加一
docs / chore / ci文档与流程杂项通常不产生新版本
带感叹号或 BREAKING CHANGE破坏性变更主版本号加一
格式校验交给 commitlint、版本与日志交给发布工具:约定才能从纸面落到流程。
仓库启用压缩合并时要配置标题模板:否则压缩后的提交信息可能不符合格式,校验直接失败。
提交格式与发布策略分工:格式管信息规范,发不发版本由发布工具的策略决定。

易错点

  • 提交信息随意:自动版本推断失效,版本维护回到手工
  • 只在本地约定不在 CI 校验:合并与压缩提交丢失格式,历史无法解析
  • BREAKING CHANGE 漏标:使用者按旧接口升级后直接失败
  • 类型滥用(什么都写 chore):变更日志失去信息量,发布说明没人看
  • 提交格式与工具配置版本不匹配:升级 commitlint 后旧提交被批量判错,先统一配置

数据来源与参考

  • Conventional Commits 1.0.0(conventionalcommits.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌