背景
不规范的 Git Commit 提交使得现有项目的 Git Log 杂乱无章,长此以往,当我们通过 Git Log 来code review 时分不清哪些是我们的新功能,哪些是修复的 bug,哪些是项目的体验优化等等。 所以我们就要为 commit 提供一个约束,使我们的提交信息更为规范,能够一目了然的知道我们这次提交的内容是什么类型的更改。
Commit Message 格式
Commit Message的格式为:<type>(<scope>): <subject> ,其中 1、 type (必填):用来说明 commit 的类别
* feat:新增功能
* fix:bug 修复
* docs:文档更新
* style:不影响程序逻辑的代码修改(修改空白字符,格式缩进,补全缺失的分号等,没有改变代码逻辑)
* refactor:重构代码(既没有新增功能,也没有修复 bug)
* perf:性能, 体验优化
* test:新增测试用例或是更新现有测试
* build:主要目的是修改项目构建系统(例如 glup,webpack,rollup 的配置等)的提交
* ci:主要目的是修改项目继续集成流程(例如 Travis,Jenkins,GitLab CI,Circle等)的提交
* chore:不属于以上类型的其他类型,比如构建流程, 依赖管理
* revert:回滚某个更早之前的提交
我们常用的也就
feat
fix
style
perf
2、scope (可选):用来说明 commit 影响的范围,比如数据层、视图层等,一般我基本不用 3、subject (必填):说明 commit 的目的描述
commitlint 工具
我们需要借助 commitlint 工具来帮我们检查我提交代码时写的 commit message 是否符合我们上述所说的规范 1、安装工具
npm install --save-dev @commitlint/config-conventional @commitlint/cli
2、项目根目录下创建配置文件
module.exports = {
extends: ['@commitlint/config-conventional']
}
如果你要新增配置规则可以在后面追加在 rules: {} 中,关于具体的规则属性可以参考commitlint官网
Git Hooks
commitlint 本身只是一个检测工具,想要让它真正发挥作用需要将其与 git hooks 结合,当我们在使用git命令提交代码的时候能够检测我们的commit语法规则,从而阻止不合法的commit,push等。
vue-cli 创建的项目
在使用 vue脚手架 vue-cli 创建项目的时候,Vue 会自动帮我们做好一些配置,其中就有一个叫做 yorkie 的包,是尤大fork自 husky 的,做了一些小改动,他们的功能是一样的,都是生成一些 git hooks 文件,读取项目中 package.json 的相关配置项去执行一些命令。 如果你的项目也是通过 vue-cli 创建的 Vue 项目,只需要在你的 package.json 文件中加上
"gitHooks": {
"commit-msg": "commitlint -E GIT_PARAMS"
}
其中 commit-msg 是git hooks(git 钩子)
参考
Git Commit 团队规范限制
|