# git提交规范

本规范根据团队现状并参考国际通用的Git提交日志信息惯例、规范和最佳实践制定。

## 目标

* 统一代码提交信息格式，易于查找
* 可以通过脚本生成 CHANGELOG
* 便于查找，比如过滤掉格式修正等不重要的提交，如style、chore

## 提交用户名格式

```
中文名<邮箱>
```

比如：

```
焦丙乾<jiaobq123@163.com>
```

邮箱可以使用公司邮箱或者个人常用邮箱；

设置用户名方法参考：<https://help.github.com/articles/setting-your-username-in-git/>

设置邮箱方法参考：<https://help.github.com/articles/setting-your-email-in-git/>

## 提交内容格式

```
<类型>(<范围>): <标题>
<空白行>
<描述>
<空白行>
<补充说明>
```

### 约束

为了方便各种工具阅读

* 每一行 \[不应该] 超过100个字符
* <类型>和<标题>之间的冒号 \[应该] 使用英文半角。

**注意：**&#x4E0A;面的<>符号只是代表语法块约定，在实际书写的时候不要带有<>

### <类型>

* feat 新增、修改或删除功能，feature简称
* fix 修复bug
* docs 文档
* style 代码样式，比如换行，空行，补充分号等
* refactor 重构
* test 增加测试代码
* chore 维护性代码，比如修改开发时的配置文件，用于调试的代码等，不包含产品代码的修改

**注意：**&#x4E00;次提交 \[应该] 只包含一个<类型>，如果有多个<类型>，\[建议] 分开提交。

### <范围> （可选）

* <范围> 代表修改影响的地方
* <范围> 是 \[可选] 的
* <范围> 外的括号 \[必须] 使用英文半角括号。比如： (全局)、(登录)、(身份验证)、(还款计划)等

### <标题>

* 描述尽量简洁清晰
* 如果使用英文，首字母 \[应该] 小写
* 结尾不加句号

### <描述>

如果包含需要特别指出的，或者一句标题描述不清晰的，可以写 <描述>。

### <补充说明>

补充说明主要用于对 jira 上面的问题解决。

\[应该] 以 Closes 关键字开头，后面跟 jira 问题ID，问题ID以 # 开头，使用英文半角逗号分隔，比如：

```
Closes #UU-377, #UU-378
```

## 例子

```
feat(审核管理): 增加XX网后台手动提交
```

```
chore(test): fix karma reporter config

调整`karma-spec-reporter`组件配置
```

## 附：生成 CHANGELOG

```
git log <last tag> HEAD --pretty=format:%s
```

```
git log <last release> HEAD --grep feat
```
