项目中 Git 提交信息的规则,基于 Angular 的 Commit 规范。

1
2
3
4
5
<header>					// 消息头
<BLANK LINE> // 空行
<body> // 消息体
<BLANK LINE> // 空行
<footer> // 消息页脚

一、消息头(header)格式

1
2
3
4
5
6
7
<type>(<scope>): <short summary>
│ │ │
│ │ └─⫸ Summary
│ │
│ └─⫸ Commit Scope

└─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

上面的格式中 <type><summary> 字段是强制性的,<scope> 字段是可选的,下面会说明每个字段什么意思。

type

必须是以下类型之一:

  • feat: 添加了一个新特性、新功能
  • fix: 修了一个 Bug
  • docs: 更新了文档(比如改了 Readme)
  • style: 代码的样式美化,不涉及到功能修改(比如改了缩进)
  • refactor: 一些代码结构上优化,既不是新特性也不是修 Bug(比如函数改个名字)
  • perf: 优化了性能的代码改动
  • test: 新增或者修改已有的测试代码,或者是测试相关的问题
  • chore: 跟仓库主要业务无关的构建/工程依赖/工具等功能改动

    <type> 的冒号后面需要保留一个空格

    scope

    用于说明 commit 影响的范围,比如用户系统,日志相关等等,视项目不同而不同。

    summary

    用一段简短的话总结commit的更改
  • 以动词开头,使用第一人称现在时,比如 change ,而不是 changed 或 changes
  • 不要大写第一个字母
  • 末尾没有 (.)

二、消息体(body)格式

用于对此次 commit 提供更详细的解释,可以多行。像 summary 一样,使用第一人称现在时,比如 fix ,而不是 fixed 或 fixes

footer一般有两种情况:

  • 1.破坏性更新

如果当前代码与上一个版本不兼容,则 footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。

1
2
3
4
5
6
BREAKING CHANGE: <breaking change summary>
<BLANK LINE>
<breaking change description + migration instructions>
<BLANK LINE>
<BLANK LINE>
Fixes #<issue number>
  • 2.关闭 issue 或 pr

如果当前 commit 针对某个 issue 或者某个 pr ,那么可以在 footer 部分关闭。DEPRECATED 可以不写。

1
2
3
4
5
6
DEPRECATED: <what is deprecated>
<BLANK LINE>
<deprecation description + recommended update path>
<BLANK LINE>
<BLANK LINE>
Closes #<pr number>

四、撤销更改(Revert)

还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以 revert: 开头,后面跟着被撤销 commit 的 header

提交消息体(body)的内容应包含以下内容:

  • 有关的 commit SHA 值采用以下格式:This reverts commit <SHA>
  • 详细描写 revert commit 的原因(可选)
    1
    2
    3
    Revert: "feat: 增加用户删除功能"

    This reverts commit df89c14c6084631574fdf879a57fbb243e82634a.