提交规则
1.1 commit message format(信息域)
commit message一般分为三个部分Header,Body 和 Footer
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
其中,Header 是必需的,Body 和 Footer 可以省略
1.2 HEAD
type
用于说明commit
的类别,使用下列标识
feat: 新功能
fix: 修复
docs: 文档变更
style: 代码格式(不影响代码运行的变动)
refactor: 重构(既不是增加feature,也不是修复bug)
perf: 性能优化
test: 增加测试
chore: 构建过程或辅助工具的变动
revert: 回退
build: 打包
scope
用来说明本次Commit影响的范围,即简要说明修改会涉及的部分,比如数据层、控制层、视图层等,subject
comment所在的位置,这次提交的简短描述
1.3 Body 是对本次 commit 的详细描述,可以分成多行
1.4 Footer 部分只用于两种情况
- 不兼容变动
如果当前代码与上一个版本不兼容,则
Footer
部分以BREAKING CHANGE
开头,后面是对变动的描述、以及变动理由和迁移方法
- 关闭 Issue
如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue (可依次关闭过个issue
Closes #123, #245, #992
)
1.5 Revert
还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:
开头,后面跟着被撤销 Commit 的 Header
revert: type(scope): some comment
This reverts commit bfe307ce57d87677c6c473c228e6c2ed8b81dcec.
Body部分的格式是固定的,必须写成This reverts commit <hash>
.,其中的hash是被撤销 commit 的 HSHA
标识符。
如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面
安装Commitizen工具
前提需要安装node
1.全局安装方案
1.1 全局安装commitizen
node模块
npm install -g commitizen
1.2 初始化commitizen
的适配器cz-customizable
cz-customizable
可以自定义提交提示信息
npm install -g cz-customizable
1.3 .czrc
在 home
目录中创建一个文件,并 path
引用首选的全局安装的 commitizen
适配器
{"path":"cz-customizable"}
1.4 在package.json中添加代码
...
"config": {
"commitizen": {
"path": "cz-customizable"
}
}
1.5 1.2
到1.4
的步骤也可以使用命令行实现
commitizen init cz-customizable --save-dev --save-exact
上面的命令为你做三件事。
- 安装
cz-customizable
适配器npm模块 - 节省了
devDependencies
包的依赖关系 - 添加了
config.commitizen
关键你的根源package.json
如下所示:
...
"config": {
"commitizen": {
"path": "cz-customizable"
}
}
1.6 添加cz-customizable
的配置文件.cz-config.js
到与.git
同级文件夹
'use strict';
module.exports = {
types: [
{value: 'feat', name: 'feat: 新功能'},
{value: 'fix', name: 'fix: 修复'},
{value: 'docs', name: 'docs: 文档变更'},
{value: 'style', name: 'style: 代码格式(不影响代码运行的变动)'},
{value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)'},
{value: 'perf', name: 'perf: 性能优化'},
{value: 'test', name: 'test: 增加测试'},
{value: 'chore', name: 'chore: 构建过程或辅助工具的变动'},
{value: 'revert', name: 'revert: 回退'},
{value: 'build', name: 'build: 打包'}
],
// override the messages, defaults are as follows
messages: {
type: '请选择提交类型:',
// scope: '请输入文件修改范围(可选):',
// used if allowCustomScopes is true
customScope: '请输入修改范围(可选):',
subject: '请简要描述提交(必填):',
body: '请输入详细描述(可选,待优化去除,跳过即可):',
// breaking: 'List any BREAKING CHANGES (optional):\n',
footer: '请输入要关闭的issue(待优化去除,跳过即可):',
confirmCommit: '确认使用以上信息提交?(y/n/e/h)'
},
allowCustomScopes: true,
// allowBreakingChanges: ['feat', 'fix'],
skipQuestions: ['body', 'footer'],
// limit subject length, commitlint默认是72
subjectLimit: 72
};
1.7 现在 cd
进入任何 git
存储库并使用 git cz
而不是git commit
。 你会发现 commitizen
提示。
提示:可以使用所有
git commit options
带git cz
,例如:git cz -a
。
2.项目安装方案(非全局)
NPM版本高于5.2
2.1 使用命令行npm install --save-dev commitizen
2.2 使用命令行npx commitizen init cz-customizable --save-dev --save-exact
2.3 使用命令行npx git-cz
或者添加npm脚本
...
"scripts": {
"commit": "npx git-cz"
}
2.4 添加cz-customizable
的配置文件.cz-config.js
到与.git
同级文件夹
2.5 使用 git cz