搜索
您的当前位置:首页gitcommit代码提交规范

gitcommit代码提交规范

来源:乌哈旅游
gitcommit代码提交规范

⼀、为什么需要制定提交规范?

在团队协作开发时,每个⼈提交代码时都会写 commit message。

每个⼈都有⾃⼰的书写风格,翻看我们组的git log, 可以说是五花⼋门,⼗分不利于阅读和维护。

⼀般来说,⼤⼚都有⼀套的⾃⼰的提交规范,尤其是在⼀些⼤型开源项⽬中,commit message 都是⼗分⼀致的。因此,我们需要制定统⼀标准,促使团队形成⼀致的代码提交风格,更好的提⾼⼯作效率,成为⼀名有追求的⼯程师。

⼆、业界通⽤的 git 提交规范有哪些?

1.

在 github上 的提交记录被业内许多⼈认可,逐渐被⼤家引⽤。格式:

type(scope) : subject

( 1 ) type(必须) : commit 的类别,只允许使⽤下⾯⼏个标识:

feat : 新功能fix : 修复bugdocs : ⽂档改变style : 代码格式改变

refactor : 某个已有功能重构perf : 性能优化test : 增加测试

build : 改变了build⼯具 如 grunt换成了 npmrevert : 撤销上⼀次的 commit

chore : 构建过程或辅助⼯具的变动

( 2 ) scope(可选) : ⽤于说明 commit 影响的范围,⽐如数据层、控制层、视图层等等,视项⽬不同⽽不同。( 3 ) subject(必须) : commit 的简短描述,不超过50个字符。commitizen 是⼀个撰写合格 Commit message 的⼯具,遵循 Angular 的提交规范。安装:

全局安装 commitizennpm install -g commitizen进⼊项⽬⽂件夹,运⾏如下命令:

commitizen init cz-conventional-changelog --save --save-exact使⽤:

⽤ git cz 命令取代 git commit(先使⽤git add),这时会出现如下选项:( 1 )选择 type

( 2 )填写 scope(选填)

What is the scope of this change (e.g. component or file name) (press enter to skip)core

( 3 )填写 subject

Write a short, imperative tense description of the change:set a to b

完成,运⾏ git log 命令,查看我们刚才提交的 commit message,如下:fix(core): set a to b优点:

符合业内标准(许多项⽬使⽤ AngularJS 的commit 规范)提交过程更加规范(使⽤ commitizen 规范⼯具,风格统⼀)能够⽣成风格统⼀的 commit log(type(scope):subject)

缺点:

需要安装 commitizen ⼯具包,使项⽬更⼤、更重了(适合⼤型开源项⽬)提交过程受约束较⼤有⼀定的学习成本

2. 设置 git commit 模板

步骤如下:( 1 ) 建⽴模板⽂件

在项⽬中建⽴ .git_template ⽂件,内容可以⾃定义:type:

scope:subject:( 2 ) 设置模板运⾏如下命令:

git config commit.template .git_template // 当前项⽬

( 3 ) 提交代码

先使⽤ git add 添加代码

使⽤ git commit 按照模板填写最后 git push 推送到远端优点:

规则可配置,更⾃由

配置⽅式简洁(只需添加配置⽂件)

缺点:

便利性差,每次都要⽤ vim 编辑器填写模板易出错,没有可靠的校验⽅式

三、制定适合我们的 git commit 提交规范

第⼆章中提到的两种业内普遍使⽤的规范,都不完全适合我们。

第⼀种⽅式适合⼤型开源项⽬,我们如果也照搬会⽐较⿇烦,但我们可以借鉴 type(scope): subject 的提交格式,也算是与⼤⼚同步;第⼆种⽅式虽然⾃由,但是也不⽐较⿇烦,要配置模板。

因此,我们只模仿 type(scope): subject 的提交格式,不使⽤⼯具 or 模板校验,靠⼤家⾃觉遵守即可。

格式

type: description

1. type 类型

type 是 commit 的类别,只允许如下⼏种标识:

fix: 修复bugadd: 新功能update: 更新

style : 代码格式改变test: 增加测试代码

revert: 撤销上⼀次的commit

build: 构建⼯具或构建过程等的变动,如:gulp 换成了 webpack,webpack 升级等

2. description

description 是对本次提交的简短描述。不超过50个字符。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top