git commit规范

推荐网址 Conventional Commits

1
2
3
4
5
6
<type>(<optional scope>): <subject>

[optional body]

[optional footer(s)]

1
feat(utils/sheetjs) : 新增XX函数和XX接口 

Type

必填的,用于表示当前提交的意图,使用以下的一项:

1
2
3
4
5
6
7
8
9
10
11
feat: 引入功能
fix: 修复问题
build: 涉及构建系统的改动
docs: 只涉及文档的改动
refactor: 代码重构,不涉及问题修复和功能引入
perf: 性能优化
style: 修改代码风格,不影响代码含义;(空格, 格式化, 缺少分号 等)
test: 添加测试 或 修复测试
ci: 修复CI配置和脚本
revert: 回滚之前的提交
chore: 构建过程、工具库的修改;(文档生成工具)

Scope

可选的,用于描述改动的范围。

1
2
通常,复杂的项目会被拆分成子目录、包、子模块等组织单元,这些单元可以作为Scpoe的内容;
一些简单的项目可能没有拆分成多个单元,这时可以不填写scope;

Subject

必填的,用于简洁地描述改动,

1
2
3
使用祈使句,现在时;"change" not "changed" nor "changes"
首字母不需要大写
结尾不需要加符号(.)

Body

可选的,用于补充描述改动,和Subject间隔一行;

1
2
3
应当包含修改的原因,关注修改前后的行为差别;
可以描述你对于改动的考虑因素(改动带来的副作用、代码中的坑)
不用描述修改了什么文件;

可选的,用于描述Breaking Changes、需求/BUG相关的信息;

1
2
3
4
5
6
7
8
9
10
和Subject/Body间隔一行;

Breaking changes
如果改动不兼容之前的版本,可以使用 BREAKING CHANGE: 标记这是一个Breaking Changes. 比如:
BREAKING CHANGE: refactor to use new APIs, all legacy APIs will be deprecated.

Referencing issues
Footer也可以使用Implements描述实现了某个需求,可以使用Closes描述修复了某个BUG;
可以在关键词之后补充需求/BUG的标题或链接;比如:
Closes #123, #456 Implements #543