Commitizen——标准化的Git commit工具
前言
既然来到了这篇文章,不必我多说,你肯定是觉得Commit后的Message格式没有规范不利于促进开发
又或者是看到开源项目的 commit 格式好看 🌝
为什么需要标准化的 Commit Message
对比一下下面两张图
可以很清楚的看出来,虽然一个是英文,一个是中文,但是依旧是英文的这个项目可以一眼看出来每次 commit 做了什么,而中文的需要看完一整句话
并且中文的这个项目,每次提交究竟是添加新特性,还是修复bug,也没有区分
所以如果有一个工具,能自动帮我们分类和规范格式,就可以促进开发效率
这个工具就是 Commitizen
Commitizen
Commitizen 分为两部分,脚手架(cz-cli) 和 规范(Adapters)
脚手架可以帮助我们初始化和构建 Commitizen,而规范是开发者可以自定义的内容
官方默认提供的规范是 cz-conventional-changelog
同时,官方也提供了一些优秀的第三方规范,例如你肯定想要的表情包commit规范:cz-emoji-conventional
本文也将提供这两种规范的安装和使用方式
安装
一条命令搞定
npm install -g commitizen
这就安装成功了,而且是全局安装,以后再用就不用重复安装了
当然,安装成功的只是一个脚手架,现在还不能使用
创建 package.json
Commitizen 基于 nodejs,想要使用的话,在你的项目中自然需要一个 package.json
如果已经存在了那最好,没有的话,例如是一个 java 项目,那么你可以在项目根目录执行以下命令
npm init
当然,如果不是 nodejs 的项目,你肯定不需要将这些文件也上传到 git
你可以在 .gitignore
文件中加入下面几句来忽略这些文件
package-lock.json
package.json
node_modules/
初始化
这一步就可以选择我们需要的规范了
windows
commitizen init 规范名称 --save-dev --save-exact
linux
commitizen init 规范名称 --yarn --dev --exact
commitizen 脚手架会自动帮我们导入规范的依赖并进行下载,所以你只要注意不要写错规范名称就好了
关于这些名称,可以参考 这里推荐的规范
例如你想使用默认的规范
那么可以这样写:
commitizen init cz-conventional-changelog --save-dev --save-exact
而如果你想使用带表情包的,就这样写:
commitizen init cz-emoji-conventional --save-dev --save-exact
使用
使用的方式很简单,将你原本要输入的 git commit
命令替换为 git cz
即可
当你的控制台出现这样的界面,你可以使用方向键的 ↑ 和 ↓ 来移动光标选择这次 commit 的 type
按回车 enter 进行选择
常用的 type 有:
英文 | 含义 |
---|---|
feat | 新特性,新功能 |
fix | 修bug |
docs | 更新文档 |
style | 修改代码风格、代码格式(不影响代码运行的变动) |
refactor | 重构代码(既不是新增功能,也不是修改bug,可以理解为觉得原本写太烂了,重新写了一遍) |
perf | 优化性能、优化体验 |
test | 测试 |
chore | 构建过程或者辅助工具的变动 |
revert | 回滚版本 |
merge | 代码合并 |
sync | 同步主线或分支 |
随后,根据提示输入相关信息即可
例如
scope 作用域,也就是这次变动影响的范围,例如数据层,控制层,或者单单某个类
subject / description 描述,cz 将描述分为简短描述和详细描述,使用几下就清楚了
除此以外,cz 还会提示你这次变动是否与某个 issue 有关等等
变更规范
上面是在初始化时选择的规范,如果在后期我们想要变更该怎么做?
首先,脚手架只有在初始化才能帮我们自动管理依赖
后期想要变动,就得手动下载依赖了
例如初始化时用的是官方默认的规范
那么这时候你的package.json里面会有这样一段代码
"config": {
"commitizen": {
"path": "node_modules/cz-conventional-changelog"
}
}
我们如果想要换成有表情包的规范形式 cz-emoji-conventional
首先需要下载依赖,当然是要在项目根目录执行:
npm i cz-emoji-conventional
然后修改上面 package.json 中的配置
"config": {
"commitizen": {
"path": "node_modules/cz-emoji-conventional"
}
}
到这里,规范就修改完成了