Git commit message 提交日志格式
1. 提交日志格式
每次提交, Commit message 都包括三个部分: header, body, footer。
1 | |
其中header是必须的, body和footer可以省略。
提交消息的任何行都不能超过100个字符!为了在github以及各种git工具中更容易阅读消息。
2. header
header部分只有一行, 包括三个字段type(必须), scope, subject。
(1) type
用于说明commit的类别。
| type | 描述 |
|---|---|
| feat | 新功能(feature) |
| fix | 修补bug |
| docs | 文档(documentation) |
| perf | 改进性能的代码更改 |
| style | 不影响代码含义的更改(空格,格式,缺少分号等) |
| refactor | 重构(即不是新增功能, 也不是修改bug的代码变动) |
| test | 添加缺失测试或更正现有测试 |
| chore | 其他修改(非src或测试文件的修改) |
| ci | CI配置文件和脚本的更改(示例范围: Circle, BrowserStack, SauceLabs) |
| build | 影响构建系统或外部依赖项的更改(示例范围:gulp,broccoli,npm) |
| revert | 返回以前的提交 |
(2) scope
用于说明commit影响的范围, 比如数据层、控制层、视图层等等, 视项目不同而不同。
(3) scope
是commit目的的简短描述, 不超过50个字符。
- 以动词开头, 使用第一人称现在时, 比如change, 而不是changed或changes
- 第一个字母小写
- 结尾不加句号(.)
3. body
body部分是对本次commit的详细描述, 可以分成多行。
下面是一个范例:
1 | |
有两个注意点:
1 | |
4. footer
footer部分只用于两种情况:
(1)不兼容变动
如果当前代码与上一个版本不兼容,则footer部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。
(2)关闭Issue
如果当前commit针对某个issue,那么可以在 Footer 部分关闭这个 issue 。
1 | |
也可以一次关闭多个 issue 。
1 | |
5. revert
还有一种特殊情况,如果当前commit用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销commit的 Header。
1 | |
Body部分的格式是固定的,必须写成This reverts commit commit的 SHA 标识符。
如果当前commit与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面。