AngularJS提交规范 逐渐被大家认可,也成为了通用的提交规范. 所以本文主要使用的规范对象统一指 AngularJS提交规范 他可以通过可以通过工具 commitizen 进行一些模板和 AngularJS 在 github上 的提交记录被业内许多人认可,逐渐被大家引用。 每次提交,Commit message 都包括三个部分:Header(line 1),Body 和 Footer Header 部分只有一行,包含三个部分 type (必须), scope(选填)和subject(必填) 用于说明commit的类别,只允许使用以下标识 如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。 scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。 subject是 commit 目的的简短描述,不超过50个字符。 以动词开头,使用第一人称现在时,比如change,而不是changed或者changes第一个字母小写-汉语忽略结尾不加句号(.) Body 部分是对本次 commit 的详细描述,可以分成多行。下面是一个范例。 有两个注意点。 (1)使用第一人称现在时,比如使用change而不是changed或changes。 (2)应该说明代码变动的动机,以及与以前行为的对比。 Footer 部分只用于两种情况。 (1)不兼容变动 如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。 (2)关闭 Issue 如果当前 commit 针对某个或者多个issue github上可以直接关联PR和ISSUE ,gitlab可以和 JIRA配合,具体见 GitLab Jira integration OR 还有一种特殊情况,如果当前 commit 用于撤销以前的 commit,则必须以revert:开头,后面跟着被撤销 Commit 的 Header。 Body部分的格式是固定的,必须写成This reverts commit <hash>.,其中的hash是被撤销 commit 的 SHA 标识符。 如果当前 commit 与被撤销的 commit,在同一个发布(release)里面,那么它们都不会出现在 Change log 里面。如果两者在不同的发布,那么当前 commit,会出现在 Change log 的Reverts小标题下面。 文本格式的按照自己的习惯创建就好,比如 创建一个文件.gittemplate.txt 里面你感觉不需要的都可以去掉. 提交的时候,git commit这一部分会自动展示到commit message里 手动删除不需要的,只留需要的一部分就可以. 可以配置到单个项目的git config里 也可以配置到全局里,这个看个人使用情况 注意windows下路径要加双斜杠 不然会报错 右键菜单->TortoiseGit->setting->Git Edit local .git/config(当前仓库) 或者 Edit global .gitconfig (全局) Commitizen是一个撰写合格 Commit message 的工具,会在提交时候校验commit message是否规范。 此种方式因为需要安装node环境等,我这边感觉不太需要,就没有强制使用.需要的可以参看其他文章也有很多,这里就不再赘述 如果你的所有 Commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成(例1,例2,例3)。 生成的文档包括以下三个部分。 New featuresBug fixesBreaking changes. 每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。 上面命令不会覆盖以前的 Change log,只会在CHANGELOG.md的头部加上自从上次发布以来的变动。 为了方便使用,可以将其写入package.json的scripts字段。 以后,直接运行下面的命令即可。 直接查看Angular Commit 就可以 1 .阮一峰的博客 2.知乎:关于 Git 提交这些规范,你都遵守了吗? 3 Contributing to Angular为什么需要规范
AngularJS提交规范
规范详情
<type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
Header
(1) type
(2) scope
(3) subject
Body
More detailed explanatory text, if necessary. Wrap it to brabout 72 characters or so. Further paragraphs come after blank lines. Bullet points are okay, toobr- Use a hanging indent
Footer
BREAKING CHANGE: isolate scope bindings definition has changed.br br To migrate the code follow the example below:br br Before:br br scope: {br myAttr: 'attribute',br }brbr After:br br scope: {br myAttr: '@',br }br br The removed `inject` wasn't generaly useful for directives so there should be no code using it.
Close #123
Closes #123, #245, #992
Revert
revert: feat(pencil): add 'graphiteWidth' optionbrbrThis reverts commit 667ecc1654a317a13331b17617d973392f415f02.
如何使用
通过配置git模板使用
创建commit message模板
fix(scope): subject (#124)brbrdescbrbrPR Close #37594brbr类型字段包含:br feat:新功能(feature)br fix:修复bugbr docs:文档(documentation)br style: 格式化 ESLint调整等(不影响代码运行的变动)br refactor:重构(即不是新增功能,也不是修改bug的代码变动)br test:增加测试br chore:构建过程或辅助工具的变动br影响范围:br 用于说明 commit 影响的范围,比如修改的登录页、账户中心页等br主题:br commit目的的简短描述,不超过50个字符brJIRA:br 如果有对应的jira 请附上jira号brBody 部分是对本次 commit 的详细描述,可以分成多行brFooter用来关闭 Issue或以BREAKING CHANGE开头,后面是对变动的描述、br 以及变动理由和迁移方法
配置gitconfig
[commit]br template= D:\\document\\wwwroot\\.gittemplate.txt
TortoiseGit里使用
Commitizen自动校验
生成ChangeLog
conventional-changelog
安装
npm install -g conventional-changelog
追加生成
cd my-projectbrconventional-changelog -p angular -i CHANGELOG.md -w
生成所有
conventional-changelog -p angular -i CHANGELOG.md -w -r 0
使用命令简化
{ "scripts": { "changelog": "conventional-changelog -p angular -i CHANGELOG.md -w -r 0" }}
npm run changelog
配套插件
样例
一行的
docs(changelog): update changelog to beta.5
有body的
fix(release): need to depend on latest rxjs and zone.jsbrbrThe version in our package.json gets copied to the one we publish, and users need the latest of these.
三者都有的
ci: decrease payload size limit for integration tests (#37784)brbrThis commit updates the payload size limit for the `hello_world` test app built using Closure. This is likely an effect of the changes in #36578 (that reduces the bundle size for most of the apps) and additional changes in subsequent commits.brbrPR Close #37784
更多样例
引用