解决方案
工具
工具 | 作用 |
---|---|
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 必需,否则可以省略
- 非兼容性的变更,当前代码与上一个版本有非兼容性改变,则 footer 以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动的理由
- 关闭缺陷,如果当前提交是针对特定的 issue,那么可以在 footer 部分填写需要关闭的单个 issue 或一系列 issues