在团队协作开发时,每个人提交代码时都会写 commit message。每个人都有自己的书写风格,翻看我们组的git log, 可以说是五花八门,十分不利于阅读和维护。本文将介绍 Git 提交的规范以及如何利用 git-commit-plugin 插件快速提交规范的commit。
一般来说,大厂都有一套的自己的提交规范,尤其是在一些大型开源项目中,commit message 都是十分一致的。因此,我们需要制定统一标准,促使团队形成一致的代码提交风格,更好的提高工作效率,成为一名有追求的工程师。其中 AngularJS 在 github 上 的提交记录被业内许多人认可,逐渐被大家引用。
Commit message 的格式
每次提交,Commit message 都包括三个部分:header,body 和 footer。
1 | type(scope):空格subject |
1. type 类型
type 是 commit 的类别,只允许如下几种标识:
1 | # 主要type |
2. scope
scope也为必填项,用于描述改动的范围,格式为项目名/模块名,例如:xxxServices 。如果一次commit修改多个模块,建议拆分成多次commit,以便更好追踪和维护。
3. subject
commit 目的的简短描述,不超过50个字符。结尾一般是 #33224 这样的超链接。链接到本次提交的 url 但不强制
4. body
对本次 commit 的详细描述
5. footer
Footer 部分只用于以下两种情况:
5.1. 不兼容变动: 如果当前代码与上一个版本不兼容,则 Footer 部分以BREAKING CHANGE开头,后面是对变动的描述、以及变动理由和迁移方法。例如下边这样:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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.
5.2. 关闭 Issue: 如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue 。
完整的提交demo如下:
1 | fix(dev-infra): remove bots from special thanks section |
那么每次都这样编写提交的内容,还要注意对应的格式。我们有没有简单方便的办法呢,那就是使用对应工具的插件。git-commit-plugin 插件可以帮助我们快速的边写提交的信息,但是插件本身并不支持格式化。所以,我在该插件的基础上做了二次开发,具体使用如下:
下载安装对应的插件:git-commit-plugin-1.0.6.vsix
在插件的扩展配置中,进行对应的提交模板配置。可以配置多个,这是因为我公司和我自己的提交格式都不一样。具体可以参见项目的 readme.md
1 | "GitCommitPlugin.Templates": [ |
- 配置插件是否启用图标
1 | "GitCommitPlugin.ShowEmoji": true |