每个提交消息都包含一个 header ,一个 body 和一个 footer。其中 header 是一种包含 type、scope、subject 的特殊格式:
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
header 是必需的,scope 是可选的。 提交消息的任何一行都不能超过 100 个字符!这使得该消息在 GitHub 以及各种 git 工具中更易于阅读。
Revert
如果该提交还原了之前的提交,则应以 revert:
开头,后跟被还原提交的 header。在主体中应该说:This reverts commit <hash>.
,其中 hash 是被还原提交的 SHA。
revert: fix(post): fix create post logic
This reverts commit 9616f2257a473d5aa35c00c2af27a964788c0044.
Type
必须为以下之一:
feat: 一个新功能
fix: 一个 Bug 修正
docs: 仅文档更改
style: 格式更改(不会影响代码含义的更改)
refactor: 重构(既不修正错误也不增加功能的代码更改)
perf: 性能提升
test: 添加缺失或纠正现有测试案例
chore: 更改构建过程或辅助工具和库,例如文档生成
Scope
scope 用于说明 commit 影响的范围,必须是一个描述某部分代码的名词。
当更改影响的范围不止一个范围时,可以使用 *。
Subject
简要描述了更改:
以动词开头,使用第一人称现在时:用 change 而不是 changed 或 changes
不要大写第一个字母
末尾没有句点 (.)
Body
就像在 subject 中一样,以动词开头,使用第一人称现在时:用 change 而不是 changed 或 changes。
body 应包括变动的动机,并与之前的行为进行对比。
Footer
只用于两种情况
不兼容的变动,如果当前代码与上一个版本不兼容,应以单词
BREAKING CHANGE
开头:用空格或两个换行符。后面是对变动的描述、以及变动理由和迁移方法。关闭 Issue,如果当前 commit 针对某个 issue,那么可以。
重大更改应以单词 BREAKING CHANGE
开头:用空格或两个换行符。然后将其余的提交消息用于此目的。
相关链接:
https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
https://www.conventionalcommits.org/zh-hans/v1.0.0-beta.4/#%e7%ba%a6%e5%ae%9a%e5%bc%8f%e6%8f%90%e4%ba%a4%e8%a7%84%e8%8c%83
https://stackoverflow.com/questions/2290016/git-commit-messages-50-72-formatting