Git提交规范保护
Git 规范
Git 作为现在最流行的分布式管理工具,基本上是每个团队的必备。
Git Commit格式校验
- 准备commitlint/cli用于格式校验
- 准备husky用于git提交代码时触发校验
husky
husky 是创建 git 客户端 hooks 的神器。
目前最新版本是 7.*
,文档在这里(opens new window)
初始化 husky 只需要三步。首先要安装:
1 | $ npm i husky --save-dev |
执行下面的脚本,会初始化一个 .husky
目录:
1 | $ npx husky install |
初始化后,就可以添加 hook 了。
添加一个 commit-msg
钩子,并指定一个默认 shell:
1 | $ npx husky add .husky/commit-msg 'npx --no-install commitlint --edit "$1"' |
现在在执行 git commit
之前,就会执行上面指定的 shell。
commitlint
上面的 shell 里有一个 commitlint
命令,其实它是另一个工具,用来校验 commit 提交信息,这是 husky + commitlint
这对黄金搭档的主要功能。
commitlint 的文档在这里(opens new window)
为了直观的看出 commit 的更新内容,开发者社区诞生了一种规范,将 commit 按照功能划分,加一些固定前缀,比如 fix:
,feat:
,用来标记这个 commit 主要做了什么事情。
commitlint
命令就是校验 commit 信息是否符合上述规范,不符合,则会配合 husky 阻止提交。
首先安装 commitlint:
1 | $ npm i @commitlint/{config-conventional,cli} --save-dev |
然后创建配置文件:
1 | echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js |
这样就好了,然后我们随便改一处代码,试试效果:
1 | $ git add . |
因为 “test” 不符合 commit 规范,所以被阻止了,执行结果如下:
我们再试一下符合规范的提交格式:
1 | $ git commit -m 'fix: 修复**功能' |
这样就可以通过了!
commit前缀
目前主流的前缀包括以下部分:
- build:表示构建,发布版本可用这个
- ci:更新 CI/CD 等自动化配置
- chore:杂项,其他更改
- docs:更新文档
- feat:常用,表示新增功能
- fix:常用:表示修复 bug
- perf:性能优化
- refactor:重构
- revert:代码回滚
- style:样式更改
- test:单元测试更改