首页/开发/Git 与协作速查/提交类型(type)常用对照
协作与代码评审75 条

提交类型(type)常用对照

feat/fix 是规范定义的核心类型,其余 build、chore、ci、docs、style、refactor、perf、test 等来自社区与 Angular 约定,按团队词典统一使用。

Git 与协作速查开发更新于 2026-10-13

提交类型是什么

Conventional Commits 约定提交标题形如 type(scope): description,其中 type 说明这次改动属于哪一类。规范层面只强制 feat 与 fix 两种核心类型,其余 build、chore、ci、docs、style、refactor、perf、test 等来自 Angular 团队的约定与社区实践。类型集合由团队自行裁剪,但必须写进贡献指南并保持一致,它也是自动生成变更日志与决定版本号的输入。

基本信息

标题格式<type>(<scope>): <描述>,scope 可省略
规范强制feat 与 fix
社区扩展build / chore / ci / docs / style / refactor / perf / test 等
破坏性标记type 后加 ! 或页脚写 BREAKING CHANGE
平台与托管平台无关,写进提交信息即可

常用 type

type含义示例场景
feat新增功能新接口、新页面
fix缺陷修复修复空指针、纠正计算
docs文档变更README、注释
refactor重构,行为不变抽函数、换实现
perf性能优化减少查询次数
test测试相关补用例、改夹具
build构建与依赖升级依赖、改打包
ci流水线配置改工作流文件
chore杂项维护版本号、脚本调整

使用要点

  • 描述用动词开头说清做了什么,类型本身只表达改动性质
  • 一次提交只做一类事,混在一起会让类型判断失真
  • scope 建议写模块或目录名,便于按区域检索历史
  • 允许的类型越少越好用,超过十个前缀团队就开始随意挑
  • 改了行为就归 fix,没改行为才是 refactor,边界写进指南
  • 紧跟冒号与一个空格再接描述,格式统一才方便工具解析

使用示例

使用示例
git commit -m 'feat(cart): 支持优惠券叠加'
git commit -m 'fix(login): 修复重定向循环'
git commit -m 'docs: 补充部署前置条件'
git commit -m 'refactor(core): 提取重试工具函数'
git commit -m 'perf(db): 批量写入替代逐条插入'
git commit -m 'test(order): 补充超时用例'
类型清单写进仓库的 CONTRIBUTING,并明确允许集合与边界示例,能显著减少语义相近的前缀各自为政;类型名建议统一小写以保持一致。
类型还决定自动化行为:规范把 fix 映射为补丁版本、feat 映射为次版本,破坏性变更映射为主版本;类型写错会让发版工具算错版本,提交前值得多看一眼。

一个提交长什么样

  • 首行:type(scope): 一句话说明
  • 空行分隔正文
  • 正文:为什么这样改、有什么取舍(可选,但对回溯很有帮助)
  • 页脚:关联单号如 Closes #123、破坏性变更说明(按需)

易错点

  • refactor 与 fix 混用会让变更日志失真:改了行为应归 fix,只有行为不变的整理才归 refactor
  • 把 chore 当成万能桶后统计失去意义,团队需在指南里为它划定边界并给出示例
  • 描述写成空话会让日志无法用于回溯,写清具体改了什么
  • 类型大小写与拼写不统一(feat 与 Feature 混用)会让基于前缀的检索与发版工具漏掉提交,靠提交校验工具统一拦截更稳

数据来源与参考

  • Conventional Commits 1.0.0 规范(type 定义)
  • Angular 贡献者指南:提交信息规范(github.com/angular)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌