angular代码规范_如何规范地提交GitCommitMessage提交更改是什么
本⽂⾸发于我的个⼈博客: p/
Commit message 是开发的⽇常操作,它可以提供更多的历史信息,⽅便向团队清晰准确地说明代码变更、进⾏代码评审,也便于后期快速定位原始需求或缺陷,还可以有效的⽣成 Change log,对项⽬的管理实际⾄关重要,但是实际⼯作中却常常被⼤家忽略。
Commit Message 格式
⽬前,社区有多种 Commit message 的写法规范,但使⽤较多的是 Angular 团队的规范, 继⽽衍⽣了 Conventional Commits specification。同时,很多配套⼯具也是基于此规范。
scope 和 subject
subject。
type,scope
header,body
每个 commit message 均由 header
body 和 footer
footer 组成。header 具有⼀种特殊的格式,其中包括 type
它的 message 格式如下:
<type>(<scope>): <subject>
// 空⽩⾏
<body>
// 空⽩⾏
<footer>
Commit message 的任何⼀⾏都不能超过 100 个字符,这使得该消息在 GitHub 以及各种 git ⼯具中更易于阅读。
Header
header 是必填的,描述主要修改类型和内容,header 的 scope 是可选的。
Type
必须为以下之⼀:
feat:⼀项新功能
fix:⼀个错误修复
docs:仅⽂档更改
style:不会影响代码含义的更改(空格,格式,缺少分号等)
refactor:既不修正错误也不增加功能的代码更改
perf:代码更改可提⾼性能
test:添加缺失的测试或更正现有的测试
build:影响构建系统,CI 配置或外部依赖项的更改(⽐如:gulp,npm)
chore:其他不会修改 src 或测试⽂件的更改(⽐如⽂档修改,构建流程)
release:发布版本提交
Scope
可选的,可以是指定提交更改位置的任何内容,例如菜单,侧边栏等。
Subject
subject 包含对变更的简洁描述:
使⽤第⼀⼈称现在时的命令性语⽓开头, 如 change,⽽不是 changed 或 changes
第⼀个字母不要⼤写
末尾不加句号(。)
Body
可选的。与 subject ⼀样,使⽤命令式现在时态, 如 change,⽽不是 changed 或 changes。
body 应包括改变的动机,并将其与以前的⾏为进⾏对⽐。也就是说,描述为什么修改,做了什么样的修改,以及开发的思路等,是commit 的详细描述。
Footer
可选的。页脚应包含有关 Breaking Changes 的所有信息,也是此次 commit 关闭 GitHub issue 的地⽅。
BREAKING CHANGE 开头:⽤空格或两个换⾏符。后⾯是对变动的描述和变动的理由。
Breaking Changes
Breaking Changes 应以单词 BREAKING CHANGE
关闭 issue
Closes #233, #344
Breaking Changes
BREAKING CHANGE: isolate scope bindings definition has changed.
To migrate the code follow the example below:
Before:
scope: {
myAttr: 'attribute',
}
After:
scope: {
myAttr: '@',
}
The removed `inject` wasn't generaly useful for directives so there should be no code using it.
Revert
还有⼀种特殊情况,如果当前 commit 还原了先前的 commit,则应以 revert:开头,后跟还原的 commit 的 header。在 body 中必须写成:This reverts commit <hash>。其中 hash 是要还原的 commit 的 SHA 标识。
revert: feat(pencil): add 'delete' option
This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
git commit 模板
如果你想尝试⼀下这样的规范格式,那么可以为 git 设置 commit 模板, 每次 git commit 的时候在 vim 中带出, 时刻提醒⾃⼰:
在 ~/.gitconfig 添加:
[commit]
template = ~/.gitmessage
新建 ~/.gitmessage 内容可以如下:
# head: <type>(<scope>): <subject>
# - type: feat, fix, docs, style, refactor, test, chore
# - scope: can be empty (eg. if the change is a global or difficult to assign to a single component)
# - subject: start with verb (such as 'change'), 50-character line
#
# body: 72-character wrapped. This should answer:
# * Why was this change necessary?
# * How does it address the problem?
# * Are there any side effects?
#
# footer:
# - Include a link to the ticket, if any.
# - BREAKING CHANGE
#
Commitizen
commitizen/cz-cli 是⼀个撰写合格 Commit message 的⼯具。我们需要借助它提供的 git cz 命令替代我们的 git commit 命令,帮助我们⽣成符合规范的 commit message。
下⾯,我们就来安装⼀下吧。
安装
npm install commitizen -g
在项⽬⽬录⾥,运⾏下⾯的命令,使其⽀持 Angular 的 Commit message 规范。
commitizen init cz-conventional-changelog --save --save-exact
那么在对应的项⽬中执⾏ git cz 替代 git commit,之后就会出现选项,⽤来⽣成符合规范的 commit message。
效果如下:
更多安装⽅式可以查看:commitizen/cz-cli
⼩结
作为程序猿,我个⼈认为适当遵守⼀些开发规范,可以帮助我们减少编程中的⼀些错误,提⾼开发效
率。所以,⼀定要养成良好的编程习惯。
参考
Angular Git Commit Guidelines
优雅的提交你的 Git Commit Message
Commit message 和 Change log 编写指南
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论