规范的Git提交说明

  • 提供更多的历史信息,方便快速浏览

  • 可以过滤某些commit,便于筛选代码review

  • 可以追踪commit生成更新日志

  • 可以关联issues

Git提交说明结构

Git提交说明可分为三个部分:HeaderBodyFooter

<Header> <Body> <Footer>

Header

Header部分包括三个字段type(必需)、scope(可选)和subject(必需)。

<type>(<scope>): <subject>

Vue源码的提交说明省略了scope

1、type

type用于说明 commit 的提交性质。

描述
feat 新增一个功能
fix 修复一个Bug
docs 文档变更
style 代码格式(不影响功能,例如空格、分号等格式修正)
refactor 代码重构
perf 改善性能
test 测试
build 变更项目构建或外部依赖(例如scopes: webpack、gulp、npm等)
ci 更改持续集成软件的配置文件和package中的scripts命令,例如scopes: Travis, Circle等
chore 变更构建流程或辅助工具
revert 代码回退

2、scope

scope说明commit影响的范围。scope依据项目而定,例如在业务项目中可以依据菜单或者功能模块划分,如果是组件库开发,则可以依据组件划分。

提示:scope可以省略。

3、subject

subjectcommit的简短描述。

Body

commit的详细描述,说明代码提交的详细说明。

Footer

如果代码的提交是不兼容变更关闭缺陷,则Footer必需,否则可以省略。

Commitizen

commitizen是一个帮助规范commit message的工具,它可以帮我们控制 commit 的格式,并让提交复杂格式时比git commit -m更加容易,使用它提交git commit的样子如下图:

Commitizen学习(一)入门_辅助工具

基本使用:

安装 commitizen :

npm install -g commitizen

安装好后,需要安装一个adapter来定义希望使用的 commit message 格式。如果使用上面的 anjular 的规范,可以使用cz-conventional-changelog这个 adapter 。通过 commitizen 提供的命令行工具去初始化项目中希望使用的 adapter 。在项目目录下执行:

commitizen init cz-conventional-changelog --save-dev --save-exact

这个命令会帮我们在项目中安装 cz-conventional-changelog 并在 package.json 中添加如下内容:

"config": {
  "commitizen": {
    "path": "./node_modules/cz-conventional-changelog"
  }
}

之后,全局安装了 commitizen 的朋友就可以通过git cz命令代替git commit命令,从而调出如下图的界面,根据界面提示输入 commit 信息并提交。

Commitizen学习(一)入门_命令行工具_02

参考

Cz工具集使用介绍 - 规范Git提交说明

Commit message 和 Change log 编写指南

git commit规范及自动检查工具安装小记