代码提交注释
目前没有统一的强制的代码提交注释规范,社区有一些规范,这里着重介绍Angular规范https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines。
Commit message目的
- 清晰明了,说明本次提交的目的
- 自动生成
CHANGELOG.md
- 识别不重要的提交
- 为浏览提交历史时提供更明确的信息
Angular规范标准格式
1 | <type>(<scope>): <subject> |
总体要求,每行字符不得超过72个或100个,避免自动换行
关键词解释
type:说明本次commit的类别,只允许使用
- feature:一项新功能
- fix:一个错误修复
- docs:仅文档更改
- style:不影响代码含义的更改(空格,格式,缺少分号等)
- perf:优化或改善性能
- refactor:重构
- test:增加测试
- chore:构建过程或者辅助工具变化
- revert:用于撤销以前的 commit后面跟着被撤销 Commit 的首行信息,Body部分的格式是固定的,必须写成
This reverts commit <hash>.
,其中的hash是被撤销 commit 的 SHA 标识符。 - deps:或者build,依赖的外部资源变化,待定
1 | revert: feat(pencil): add 'graphiteWidth' option |
scope:说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同
subject: commit 目的的简短描述,不超过50个字符
注意:<type>(<scope>): <subject>
只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)
1 | 以动词开头,使用第一人称现在时,比如change,而不是changed或changes |
body:对本次 commit 的详细描述,可以分成多行
1 | More detailed explanatory text, if necessary. Wrap it to |
footer:只在两种情况出现,不兼容的变动,关闭issue
不兼容变动描述以BREAKING CHANGE开头,后面是变动描述和变动理由及其迁移方法
1 | BREAKING CHANGE: isolate scope bindings definition has changed. |
关闭issue则以Closes开头
1 | Closes #123, #245, #992 |
标准commit的辅助工具
Commitizenhttps://github.com/commitizen/cz-cli
validate-commit-msghttps://github.com/kentcdodds/validate-commit-msg
根据标准commit生成ChangeLog的辅助工具
conventional-changeloghttps://github.com/ajoslin/conventional-changelog