Git约定式提交
什么是约定式提交
先来看一下 git约定式提交,可以看到它规范了git commit 的格式,以一种规范化的提交约定每个开发者,清晰明了并带有语义化,提高人机可读性。
格式如下:
1 | <类型>[可选 范围]: <描述> |
常用的一些类型:
1 | feat 新功能(feature) |
范围:
范围可以写组件、文件、功能名称
描述:
为一段简短概括性的描述
正文:
详细描述,比如新增了那些文件代码 ,删除了那些文件代码,完整详细的描述
脚注:
有哪些破坏性变更需要指定BREAKING CHANGE:后面紧跟着冒号、空格,然后是描述,或者指明其他受影响功能的修复方法
还可以用ISSUES CLOSED:后面紧跟着冒号、空格,来指明改动修复了哪个问题
例如:
1 | feat(table): 添加table表格用来显示列表 |
1 | fix(time.js): 修复时间格式化在ios端失效的问题 |
1 | refactor(require.js)!: 重构全局请求方法 |
使用commitizen规范提交
此工具需要安装 node,安装好后
需要安装commitizen
1 | $ npm install -g commitizen |
安装好后在项目中提交代码就可以使用git cz 来代替git commit提交了
1 | $ git cz |
在此之前需要安装commitizen适配器才能使用
安装commitizen适配器
通过安装commitizen适配器来使用git cz 命令,以下介绍两种适配器的安装(选装):
cz-conventional-changelog
cz-conventional-changelog 遵循AngularJs的提交规范
1 | $ npm install -g cz-conventional-changelog |
linux或macOS
1 | $ echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc |
windows在C盘用户根目录下新建.czrc文件写入
1 | { "path": "cz-conventional-changelog" } |
安装配置好后就可以使用git cz来提交代码了
1 | $ git cz |
第一步指定提交类型
第二步指定范围(可以跳过)
接下来第三步第四步…
最后提交
最终形成一个规范化的提交
cz-customizable
cz-customizable 遵循AngularJs的提交规范,可以此基础上可以自定义设置
1 | $ npm install -g cz-customizable |
linux或macOS
1 | $ echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc |
windows在C盘系统用户主目录下新建.czrc文件写入
1 | { "path": "cz-conventional-changelog" } |
新建自定义配置文件.cz-config.js,放到系统用户主目录下(和.czrc同一目录下)
.cz-config.js
1 | module.exports = { |
配置完成后执行git cz,会发现变成自定义的询问
自动生成CHANGELOG.md变更日志
通过之前的规范化提交,可以通过工具自动生成版本变更日志,每个版本都会根据提交类型自动归类,最终形成CHANGELOG.md,以下介绍两种生成变更日志的方法(选装)
conventional-changelog-cli
1 | $ npm install -g conventional-changelog-cli |
在项目中执行:
1 | $ conventional-changelog -p angular -i CHANGELOG.md -s |
执行完后会生成CHANGELOG.md,每次执行都会在文件开头累加更新
如果想重新生成覆盖之前日志:
1 | $ conventional-changelog -p angular -i CHANGELOG.md -s -r 0 |
standard-version
1 | $ npm i -g standard-version |
不指定参数在项目中执行:
1 | $ standard-version |
此操作会自动执行生成CHANGELOG.md,升级version,提交,打tag等一些列操作(不推荐)
指定参数来指定版本,跳过提交,跳过打tag标签,最终只会生成CHANGELOG.md:
1 | $ standard-version -r v1.0.0 --skip.commit --skip.tag |