GitHub

解决方案

工具

工具作用
commitizen生成规范化的 commit message
commitlint检验 commit message 是否符合规范
cz-git让 commitizen 和 commitlint 使用同一个配置
husky更方便地修改 Git hooks

格式

约定式提交

type(<scope>): subject

<body>

<footer>

Type

用于说明 commit 的提交类型,必须是以下几种之一

  • feat: 新增功能
  • fix: 修复 bug
  • docs: 文档变更
  • style: 代码格式(不影响功能,例如空格、分号等格式修正)
  • refactor: 代码重构
  • perf: 改善性能
  • test: 测试
  • build: 变更项目构建或外部依赖(例如 scopes: webpack、gulp、npm 等)
  • ci: 更改持续集成软件的配置文件和 package 中的 scripts 命令,例如 scopes: Travis, Circle 等
  • chore: 变更构建流程或辅助工具
  • revert: 代码回退

Scope

用于指定本次 commit 影响的范围,可省略

Subject

本次 commit 的简洁描述,长度约定在 50 个字符以内,通常遵循以下几个规范:

  • 用动词开头,第一人称现在时表述,例如:change 代替 changed 或 changes
  • 第一个字母小写
  • 结尾不加句号

Body

对本次 commit 的详细描述,可以分成多行,可省略

  • 跟 subject 类似,用动词开头,body 应该说明修改的原因和更改前后的行为对比

如果本次提交的代码是非兼容性的变更或关闭缺陷,则 footer 必需,否则可以省略

  • 非兼容性的变更,当前代码与上一个版本有非兼容性改变,则 footer 以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动的理由
  • 关闭缺陷,如果当前提交是针对特定的 issue,那么可以在 footer 部分填写需要关闭的单个 issue 或一系列 issues