Commit书写规范

背景

git提交的commit的书写之前比较随意,看到了一个规范:

约定式提交

我顺便总结了一下,自己以后可以选用。

总体规范

1
2
3
4
5
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

详细解释:

Type:

  1. fix: 类型 为 fix 的提交表示在代码库中修复了一个bug。
  2. feat: 类型 为 feat 的提交表示在代码库中新增了一个功能。
  3. build: 用于修改项目构建系统,例如修改依赖库、外部接口或者升级 Node 版本等;
  4. chore: 用于对非业务性代码进行修改,例如修改构建流程或者工具配置等;
  5. ci: 用于修改持续集成流程,例如修改 Travis、Jenkins 等工作流配置;
  6. docs: 用于修改文档,例如修改 README 文件、API 文档等;
  7. style: 用于修改代码的样式,例如调整缩进、空格、空行等;
  8. refactor: 用于重构代码,例如修改代码结构、变量名、函数名等但不修改功能逻辑;
  9. perf: 用于优化性能,例如提升代码的性能、减少内存占用等;
  10. test: 用于修改测试用例,例如添加、删除、修改代码的测试用例等。

脚标:

BREAKING CHANGE: 在脚注中包含 BREAKING CHANGE: 或 <类型>(范围) 后面有一个 ! 的提交,表示引入了破坏性 API 变更。 破坏性变更可以是任意 类型 提交的一部分。

示例

包含了描述并且脚注中有破坏性变更的提交说明

1
2
3
4
feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files

包含了范围的修复代码

1
2
**fix(api): fix convert error**

包含了范围和破坏性变更 ! 的提交說明

1
2
feat(api)!: send an email to the customer when a product is shipped

包含了 ! 和 BREAKING CHANGE 脚注的提交说明

1
2
3
4
chore!: drop support for Node 6

BREAKING CHANGE: use JavaScript features not available in Node 6.

不包含正文的提交说明

1
2
docs: correct spelling of CHANGELOG

包含范围的提交说明

1
2
feat(lang): add polish language

包含多行正文和多行脚注的提交说明

1
2
3
4
5
6
7
8
9
10
fix: prevent racing of requests

Introduce a request id and a reference to latest request. Dismiss
incoming responses other than from latest request.

Remove timeouts which were used to mitigate the racing issue but are
obsolete now.

Reviewed-by: Z
Refs: #123

请我喝杯咖啡吧~

支付宝
微信