背景
我们在使用 git 仓库的时候,会提交各种各样的信息,有新增功能,有 bug 修复,也有文档的修改等等,如果我们每个人提交的信息格式都不一样,到时候查看 git log 的时候因为提交信息的杂乱会很头痛。这时就需要一个规范化工具来帮助我们,统一每一次提交的格式,本文就将介绍其中一种工具 — “commitizen”。
安装
在网上搜了很多资料,了解到以下 2 种安装的方式,选择自己喜欢的就好 :)
1. 全局安装
# 1. 全局安装工具commitizen
$ npm install -g commitizen
# 2. 全局安装配套常规配置选项的工具 cz-conventional-changelog
$ npm install -g cz-conventional-changelog
# 3. 在 `home` 目录创建一个全局配置cz的文件 '.czrc'
$ echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
现在在任何 git 仓库下使用git commit
的时候就可以用git cz
来代替。如下图所示:
2. 单项目安装
# 项目中安装依赖
$ npm install -g commitizen
# 在项目根目录下,初始化git cz命令
$ commitizen init cz-conventional-changelog --save --save-exact
# 执行完发现 package.json 文件中多了config的配置
此时也可以使用git cz
来提交规范化的信息了。
Commitizen 介绍
Commitizen是一个撰写规范化提交信息的工具,其中规范化的信息由三部分 Header,Body,Footer 组成,格式如下:
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
1. Header
Header 部分应只包含一行,包括三个字段:type、scope 和 subject。
- type:用于说明 Commit 的类型(feat,fix,docs,refactor,etc…详细看 git cz 注释)
- scope:用于说明本次 Commit 所影响的范围,比如 controller、user 或者 README,视项目的不同而不同
- subject:是本次 Commit 目的的简短描述
2. Body
Body 是对本地提交的一个详细描述,下面是一个示例
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
3. Footer
Footer 只用于两种情况:
- 不兼容改动: 如果当前代码与上一个版本不兼容,则 Footer 部分以 BREAKING CHANGE 开头,后面是对变动的描述、以及变动理由和迁移方法。
- 关闭 Issue: 如果当前 Commit 是针对某个 Issue 的提交,那么久可以在 Footer 中关闭这个 Issue:Closes #234