Skip to content
On this page

Commit Message 规范

参考 Angular Commit Message Guidelines

格式

每次提交,Commit message 都由 header、bodyfooter 三个部分组成。

header 是必需的,bodyfooter 可以省略。

任何一行提交信息都不能超过 100 个字符。这是为了避免自动换行影响阅读。

header 有一种特殊的格式只有一行,包括 type(类型),scope(范围)和 subject(主题)。

shell
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

typesubject 是必需的,scope 是可选的。

Type

docs:文档(documentation) style: 格式(不影响代码运行的变动) refactor:重构(即不是新增功能,也不是修改bug的代码变动) test:增加测试 chore:构建过程或辅助工具的变动

type 用于说明 commit 的类别,必须为下列之一:

  • build:影响构建系统或外部依赖项的更改。例如:gulp、npm、broccoli。
  • ci: 对 CI 配置文件和脚本的更改。例如:Circle、BrowserStack、SauceLabs。
  • docs:仅仅文档更改。
  • feat:新功能(feature)。
  • fix:修复bug。
  • perf:提高性能的代码更改。
  • refactor:重构,既不是修复 bug 也不是添加新功能的代码更改。
  • style:格式,不会影响代码含义的更改(空白、格式、缺少分号)。
  • test:添加缺失的测试或更正现有的测试。
  • chore:构建过程或辅助工具的变动。

如果 type 为 feat、fix,则该 commit 将会出现在 Change log 中。其它的则由自己决定要不要放入 Change log 中,建议是不要。

例子:

shell
chore: update yarn.lock

build(deps-dev): bump serialize-javascript from 1.3.0 to 2.1.2 (#10914)

Revert

还有一种特殊情况。如果当前提交是撤销之前的提交,那么应该以 revert: 开头,后面跟撤销的 commit SHA-1值。在主体中应该说:This reverts commit <hash>.,其中的 <hash> 是撤销提交的 SHA-1 值。

Scope

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

以下是受支持范围的列表:

  • animations
  • common
  • compiler
  • compiler-cli
  • core
  • elements
  • forms
  • http
  • language-service
  • platform-browser
  • platform-browser-dynamic
  • platform-server
  • platform-webworker
  • platform-webworker-dynamic
  • router
  • service-worker
  • upgrade
  • zone.js

当然也有一些例外:

  • packaging:用来更改 packages 里 npm 包的更改。例如:公共路径更改、对所有 packages 的 package.json 的更改、d.ts 文件/格式的更改、对 bundles 的更改。
  • changelog:用于更新发行说明的 CHANGELOG.md 更改。
  • docs-infra:用于仓库的 /aio 目录中与 docs-app([angular.io])相关的更改。
  • ivy:用于渲染器的更改。
  • ngcc:用于 Angular Compatibility Compiler 的更改。
  • none/empty string:对于所有 packages 的 styletest 和 refactor 更改(例如: style: add missing semicolons)以及与特定 package 无关的文档更改 (例如: docs: fix typo in tutorial)。

Subject

subject 是对 commit 目的的简洁描述。

  • 以动词开头,使用第一人称现在时。使用 change,而不是 changed 或 changes。
  • 第一个字母小写
  • 结尾不加句号(.

Body

body 是对 commit 目的的详细描述,可以分成多行。

  • subject 一样使用动词开头、第一人称现在时。
  • body 应该说明代码改变的动机,并将其与之前的行为进行比较。

footer 部分只用于两种情况。

  • 重大更改。重大更改应以 Breaking Changes 开头。一个简短的摘要,说明重大更改的内容,以及对其重大更改的详细说明,以及从旧功能到新功能的迁移路径。
  • 关闭 issue。如果当前 commit 针对某个 issue,可以在 footer 部分包含对[问题的结尾引用]关闭这个 issue。

例子:

shell
fix: correct the twinkle

The twinkle was not previously astronomically correct;
this fix corrects to a precision of six decimal places.

Fixes #14

根据 MIT 许可证发布