关于约定式提交的规范内容。
约定式提交
一种用于给提交信息增加人机可读含义的规范。
概述
约定式提交规范是一种基于提交消息的轻量级约定。 它提供了一组用于创建清晰的提交历史的简单规则; 这使得编写基于规范的自动化工具变得更容易。在提交信息中描述新特性、bug 修复和破坏性变更。
提交说明的结构如下:
<类型>[可选的作用域]: <描述> |
提交说明包含了下面的结构化元素,以向类库使用者表明其意图:
- fix: 类型为
fix
的提交表示在代码库中修复了一个 bug。 - feat: 类型为
feat
的提交表示在代码库中新增了一个功能。 - BREAKING CHANGE: 在可选的正文或脚注的起始位置带有
BREAKING CHANGE:
的提交,表示引入了破坏性 API 变更。破坏性变更可以是任意 类型 提交的一部分。 - 其它情况: 除
fix:
和feat:
之外的提交 类型 也是被允许的,例如 @commitlint/config-conventional(基于 Angular 约定)中推荐的chore:
、docs:
、style:
、refactor:
、perf:
、test:
及其他标签。 我们也推荐使用improvement
,用于对当前实现进行改进而没有添加新功能或修复错误的提交。 请注意,这些标签在约定式提交规范中并不是强制性的。并且在语义化版本中没有隐式的影响(除非他们包含 BREAKING CHANGE)。 可以为提交类型添加一个围在圆括号内的作用域,以为其提供额外的上下文信息。例如feat(parser): adds ability to parse arrays.
。
示例
包含了描述以及正文内有破坏性变更的提交说明
feat: allow provided config object to extend other configs |
不包含正文的提交说明
docs: correct spelling of CHANGELOG |
包含作用域的提交说明
feat(lang): add polish language |
为 fix 编写的提交说明,包含(可选的) issue 编号
fix: correct minor typos in code |
约定式提交规范
- 每个提交都必须使用类型字段前缀,它由一个名词组成,诸如
feat
或fix
,其后接一个可选的作用域字段,以及一个必要的冒号(英文半角)和空格。 - 当一个提交为应用或类库实现了新特性时,必须使用
feat
类型。 - 当一个提交为应用修复了 bug 时,必须使用
fix
类型。 - 作用域字段可以跟随在类型字段后面。作用域必须是一个描述某部分代码的名词,并用圆括号包围,例如:
fix(parser):
- 描述字段必须紧接在类型/作用域前缀的空格之后。描述指的是对代码变更的简短总结,例如: fix: array parsing issue when multiple spaces were contained in string.
- 在简短描述之后,可以编写更长的提交正文,为代码变更提供额外的上下文信息。正文必须起始于描述字段结束的一个空行后。
- 在正文结束的一个空行之后,可以编写一行或多行脚注。脚注必须包含关于提交的元信息,例如:关联的合并请求、Reviewer、破坏性变更,每条元信息一行。
- 破坏性变更必须标示在正文区域最开始处,或脚注区域中某一行的开始。一个破坏性变更必须包含大写的文本
BREAKING CHANGE
,后面紧跟冒号和空格。 - 在
BREAKING CHANGE:
之后必须提供描述,以描述对 API 的变更。例如: BREAKING CHANGE: environment variables now take precedence over config files. - 在提交说明中,可以使用
feat
和fix
之外的类型。 - 工具的实现必须不区分大小写地解析构成约定式提交的信息单元,只有
BREAKING CHANGE
必须是大写的。 - 可以在类型/作用域前缀之后,
:
之前,附加!
字符,以进一步提醒注意破坏性变更。当有!
前缀时,正文或脚注内必须包含BREAKING CHANGE: description
具体类型含义如下:
类型 | 说明 |
---|---|
feat: |
新增功能 |
fix: |
修复 bug |
docs: |
仅修改文档 |
style: |
样式不会影响代码含义的更改,如 空白符、格式、分号补全、错别字修改等 |
refactor: |
既不修复错误也不增加功能的代码修改 |
perf: |
本次代码的更改可提高性能 |
test: |
添加或修改测试内容 |
build: |
影响构建系统或外部依赖的更改 (Example scopes: webpack , npm ) |
ci: |
对 CI 配置文件和脚本的更改 (Example scopes: travis ) |
chore |
其他不会修改 src 或测试文件的更改,如 .gitignore ,package.json 、yarn.json 等 |
revert |
回退旧版本 |
更多内容参见:约定式提交