前言
编写良好的Commit messages可以达到以下几个重要的目的
- 加快review的流程
- 帮助我们编写良好的版本发布日志
- 让之后的维护者了解代码里出现特定变化和feature被添加的原因
目前,社区有多种 Commit message 的写法规范。来自Angular 规范是目前使用最广的写法,比较合理和系统化。如下图:
Commit messages格式
当前业界应用的比较广泛的是 Angular Git Commit Guidelines
具体格式为:
1 | <type>: <subject> |
每个commit message一般包含header、body和footer,header是必须的,body和footer不做强制要求,所以一般可以简化为
1 | <type>(<scope>): <subject> |
或者省略scope
1 | <type>: <subject> |
说明
- type: 本次 commit 的类型,诸如 bugfix docs style 等
- scope: 本次 commit 波及的范围
- subject: 简明扼要的阐述下本次 commit 的主旨
- body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机
- footer: 描述下与之关联的 issue 或 break change,详见案例
例子
1 | feat(jqLite): add prop() support |
Type
类型必须是以下其中一种
- feat: 新功能
- fix: bug fix
- docs: 只改了文档
- style: 代码格式修改,不影响代码的逻辑性,比如空格,格式化,缺失分号等
- refactor: 代码重构,既不是bug fix也不是新功能
- perf: 性能优化
- test: 补充或修改测试代码
- chore: 改变构建流程,或者增加依赖库和工具等,比如增加文档生成工具
Scope
范围可以是指定提交更改位置的任何内容,比如search, location, browser, compile等
你可以使用*来代替多个范围
Subject
主题包含对变更的简洁描述,有几个要求
- 使用祈使句和现代时,比如使用change而不是changed或者changes
- 首字母不要大写
- 句末无需使用句号
Body
主体与主题一样,应使用祈使句和现代时,应包括改变的动机,并将其与以前的行为进行对比。
Footer
描述一些重大的修改和相关的问题,详情参考 AngularJS Message footer
Revert
当回滚提交时,必须以 revert: 作为开头然后紧跟着该提交的header。
body部分可以这样描述
1 |
|
hash是将要被回滚的那个提交的SHA码。
参考
您必须知道的 Git 分支开发规范
angular.js-git-commit-guidelines
AngularJS Git Commit Message Conventions