持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情
规范的提交说明
在Git提交代码时需要git commit -m xxx
填写提交说明(Commit message),自己写的信息往往不够规范,而规范的Commit message可以极大增强提交说明的可读性。Commitizen就是一个撰写规范 Commit message 的工具。
Angular Commit 规范
目前,社区有多种 Commit message 的写法规范,其中Angular规范是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
在Angular规范中,一次规范的提交分为三个部分,Header,Body和Footer。其中,Header 是必需的,Body 和 Footer 可以省略。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
Header部分
type
用于说明commit
的类别,只允许使用下面7个标识:
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
scope
用来说明本次Commit影响的范围,即简要说明修改会涉及的部分,比如数据层、控制层、视图层等。subject
对这次提交做一个简短描述。
Body部分
Body 是对本次 commit 的详细描述,可以分成多行。
Footer部分
下面两种情况需要添加Footer:
- 不兼容变动
如果当前代码与上一个版本不兼容,则
Footer
部分以BREAKING CHANGE
开头,后面是对变动的描述、以及变动理由和迁移方法
- 关闭 Issue
如果当前 commit 针对某个issue,那么可以在
Footer
部分关闭这个 issue (可依次关闭多个issueCloses #123, #245, #992
)
commitizen使用
项目内使用
# 安装命令行工具
npm install commitizen -D
# 安装规范适配器,cz-conventional-changelog表示使用angular规范
npx commitizen init cz-conventional-changelog --save-dev
# 调用git-cz命令执行提交
npx git-cz
commitizen init做了两件事情:
- 使用npm安装cz-conventional-changelog包
- 在package.json中添加了配置:
// 该配置告诉commitizen要require导入的adapter是什么
...
"config": {
"commitizen": {
"path": "cz-conventional-changelog"
}
}
全局使用
# 安装命令行工具
npm install -g commitizen
# 安装规范适配器,cz-conventional-changelog表示使用angular规范
npm install -g cz-conventional-changelog
# 添加adapter配置
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc
# 调用git cz命令执行提交
git cz
git cz 为什么会生效?
当我们使用第二种方式全局安装commitizen,我们可以使用git cz
命令而不是git-cz
,为什么可以这么用呢?
这里面有一个小知识,只要在PATH路径中存在git-xxx
命令,我们就可以通过git xxx
来进行调用。