You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
More detailed explanatory text, if necessary. Wrap it to
about 72 characters or so.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Use a hanging indent
This provides you a binary that you can use as a githook to validate the commit message. I recommend husky. You'll want to make this part of the commit-msg githook, e.g. when using husky, add "commitmsg": "validate-commit-msg" to your npm scripts in package.json.
一个好的项目通常都是多人合作的结果,然而每个人有每个人的开发习惯,并不统一。
所以 commit message 就显得格外的重要。有些不规范的 commit 可能过个一个月之后你自己都不知道当时的提交目的了ヘ(;´Д`ヘ),
所以,为了能使得日后复(zhao)盘(guo)的时候更加的方便,团队之间遵守同一套 commit message 规范还是很有必要的。
本篇文章介绍的是 Angular 规范,这是目前使用最广的写法,比较合理和系统化,并且有配套的工具。
commit message
的作用commit message
的格式刚刚有说到,我们使用的是 Angular 规范,下面来大致介绍下:
使用
git commit
可以提交多行commit message
.commit message
包括三个部分:Header
,Body
和Footer
其中,
Header
是必填,Body
和Footer
是选填。Header
Header
包括三个字段:type
(必填)、scope
(选填)和subject
(必填)type
type
用于说明commit
的类别,只允许使用下面 7 个标识。type
为feat
和fix
,则该commit
将肯定出现在Change log
之中。scope
scope
用于说明commit
影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。subject
subject
是commit
目的的简短描述,不超过50个字符body
Body
部分是对本次commit
的详细描述,可以分成多行。下面是一个范例。Footer
Footer
部分只用于两种情况如果当前代码与上一个版本不兼容,则
Footer
部分以BREAKING CHANGE
开头,后面是对变动的描述、以及变动理由和迁移方法。Issue
如果当前
commit
针对某个issue
,那么可以在Footer
部分关闭这个issue
Commitizen
-- 自动生成合格的commit message
根据上述的描述,你是不是在感慨写个
commit message
好麻烦,这里介绍下Commitizen
-- 能够根据提示自动生成符合规范的commit message
安装
在项目中使用
然后,在项目目录里,运行下面的命令,使其支持
Angular
的Commit message
格式。commit
在提交的时候就可以使用
git cz
就可以根据提示,生成自动化的commit message
validate-commit-msg
检查你的commit-message
规范Commitizen
可以帮助我们规范自己的commit-message
,但是在团队合作中,如何规范其他成员的commit
规范呢?可以使用
validate-commit-msg
来检查你的项目的commit-message
是否符合格式validate-commit-msg
安装husky
安装按照 validate-commit-msg 中 README 中写的,可以用
validate-commit-msg
作为一个 githook 来验证提交消息,并且推荐了husky
。执行
并且在
package.json
中的scripts
字段中加入然后每次
git commit
之后,就会自动检查commit message
是否合格。如果不合格,就会报错生成 Change log
如果你的所有 commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成。
生成的文档包括以下三个部分。
每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。
conventional-changelog
自动根据commit
生成change log
conventional-changelog
安装conventional-changelog
工作流conventionalChangelog
这一步有两种选择注意:
conventional-changelog -p angular -i CHANGELOG.md -w
,这样只能在命令行中 log 出 CHANGELOG 的内容,不会生成文件,如果要生成文件需要使用conventional-changelog -p angular -i CHANGELOG.md -s
。更多的 config 可以使用conventional-changelog --help
查看$ npm version [version]
更改版本号,然后再生成 changelog,这一步很多的博文都没有写,就会导致增量生成的 CHANGELOG 一直都有之前的 commit 记录。自动判断版本号
上面步骤有两个需要优化的地方
所以我们需要自动化的执行这些,
commitizen
还依据conventional message
,创建起一个生态使用这些工具可以简化发布流程。
在你的项目中规范
commit message
并且根据commit
自动生成CHANGELOG.md
安装完成之后版本如下(我遇到过
conventional-recommended-bump
是4.x
的版本会报错Error: Unable to load the "angular" preset package. Please make sure it's installed.
。降低下版本就好。package.json
中增加script
字段使用
git cz
就可以根据提示,生成自动化的commit message
使用
npm run changelog
生成 changelog, tag, 升级 version, 并自动执行 git push问题
改方案还有一个问题尚未解决,就是使用
conventional-recommended-bump
更换推荐版本,我实验的项目都是只改动了中间的版本号,如果你的项目对版本号要去比较严格,建议使用手动更换版本号的方式。The text was updated successfully, but these errors were encountered: