规范Git Commit Message
前言
git想必大家都不陌生,基本上是作为现代开发的必备工具之一。代码同步快捷方便,分支无缝切换,在代码管理上无出其右。
然而你用的有多爽,代价就有多痛。
想当年大片大片的no message,update,commit,那也是相当壮观,找个代码花点时间那也不在话下。
但是随着前端越来越趋近工程话,一个项目也不在是一个人的事,协同开发,模块开发,已是大势所趋。
既然要协同要分离甚至是组合,那对于你单次提交内容的准确性,要求就越来越高。你需要将你写了什么代码什么功能,及哪个版本,具体做了什么,都得写上,以便他人合并或者分离你的代码,进行开发。
因此设计一个合理的适合自己项目的规范,就势在必行。
前端的message规范方面网上有很多,我就不再赘述。
本篇主要讲怎么一步一步设计自己项目的message规范。
统一提交格式
首先统一git的基础提交格式<type>(<scope>): <subject>
关于git commit message的相关格式规范网上有很多,这里参考Angular提交规范
参考:Angular提交规范(英文原文档) 【翻译】AngularJS Git 提交信息规范
原理
使用 git 强制校验提交的 message 是否符合规范,我们使用 git hooks 能力来限制提交,主要使用 commit-msg 钩子。
主要工具
- commitlint (version: 12.1.4)
- husky (version: 6.0.0)
使用安装
第一步
1 | # 安装 commitlint 相关 |
第二步
1 | # 安装husky |
第三步
1 | # 激活hooks |
第四步
项目根目录创建commitlint 配置文件(commitlint.config.js)
这里是规范配置最关键的部分,相关规则细节都可以在官网上找到,可以根据这个配置规则来设计自己的规范。
1 | /** |
在.husky目录下创建 commit-msg 文件(.husky/commit-msg)
1 |
|
测试
最后测试 commitlint 规范是否生效
1 | #生成项目以前提交中的问题 |
如果安装成功,输出大致如下(如果存在不符合规范的commit message)
1 | ... |
安装完成即会对该项目下的git提交,都进行message规范校验。
说明
- 主要使用commitlint来做规则制定,更多详细文档,见官网
- 不要使用以下官网代码来生成配置文件,在window下会有编码格式问题
echo "module.exports = { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
- 不要使用husky生成commit-msg文件
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1