Skip to content

Git提交规范

   

一、背景

统一git提交的信息,方便快速定位问题,提交美观。

二、git commit 规范说明

Git 提交规范,具有参考价值的就是Angular的提交,该规范将commit分为若干个类型,根据提交的代码功能分为以下类型。  

2.1 基本commit类型

2.1.1 type(必填)

用于说明本次commit的类别,只允许使用下面7个标识

  • feat:新功能(feature)

  • fix:修补bug(描述可以是问题号+问题描述)

  • docs:文档(documentation)

  • chore:其他

基本上我们在日常开发中使用的最多的都是feat以及fix

2.1.2 scope(必填)

scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

例如在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的修改影响了不止一个scope,你可以使用*代替。

当前影响改为具体页面、具体功能的影响

text
feat(home):修改首页布局
fix(login): #676 修复登录bug,解决方式:增加登录判断逻辑

2.1.3 subject(必填)

subject是commit目的的简短描述,不超过50个字符。

建议使用中文(感觉中国人用中文描述问题能更清楚一些)。

  • 结尾不加句号或其他标点符号。

  • 根据以上规范git commit message将是如下的格式:

text
功能提交模板: 
feat:title:TB task name
content: detail xxxxxxx

bug fix模板:
fix:禅道id 禅道title #676 修复强制更新问题
原因:
解决方案:

doc/chore:
content:xxxx

2.2 基本写法事例

text
git add .
git commit -m "feat: 完成强制更新功能" 
git commit -m "fix: 强制更新弹窗bug"
git commit -m "fix: #352 强制更新弹窗bug"
git commit -m "fix: 删除功能页面下的ForceUpdate.tsx文件"
git commit -m "style: 代码格式化"
git commit -m "chore: 增加打包脚本"
git commit -m "docs: 增加项目文档"

2.3 idea、vscode、android studio的插件使用

以上的规范在常用的编辑器中都有插件支持,可以在应用市场直接搜索。

2.3.1 idea、android studio插件安装

1)打开插件中心

2)搜索git commit template插件并安装

3)使用打开侧边commit tab

插件提供了type、scope、message的信息填写。

2.3.2 vscode插件安装

应用市场搜索 commit message Editor 安装

三、git 分支规范

现在常用的git flow规范

3.1 分支说明

分支分支名称备注
master/main主分支
dev/develop开发分支
feat/feature需求功能分支
fix/hotfix紧急修复分支
release预上线分支

3.1.1 master 分支

master 为主分支,用于部署到正式环境(PRO),一般由 releasehotfix 分支合并,任何情况下不允许直接在 master 分支上修改代码。

3.1.2 release 分支(非必需)

release 为预上线分支,用于部署到预上线环境(UAT),始终保持与 master 分支一致,一般由 develophotfix 分支合并,不建议直接在 release 分支上直接修改代码。如果在 release 分支测试出问题,需要回归验证 develop 分支看否存在此问题。

3.1.3 hotfix 分支(非必需)

hotfix 为紧急修复分支,命名规则为 hotfix- 开头。当线上出现紧急问题需要马上修复时,需要基于 releasemaster 分支创建 hotfix 分支,修复完成后,再合并到 releasedevelop 分支,一旦修复上线,便将其删除。

3.1.4 dev 分支

dev 为测试分支,用于部署到测试环境(FAT),始终保持最新完成以及 bug 修复后的代码,可根据需求大小程度确定是由 feat 分支合并,还是直接在上面开发。

一定是满足测试的代码才能往上面合并或提交。

3.1.5 feat 分支

fea 为需求开发分支,命名规则为 feat- 开头,一旦该需求上线,便将其删除。

这么说可能有点不容易理解,接下来举几个开发场景。

3.3 分支命名规范

3.3.1 feat 分支命名规范

格式: feat/功能-tb任务id-工号

tb 的任务 id 如下:

例如:feat/人脸识别-256-zjth2015

3.3.2 fix 分支命名规范

格式:fix/bug修复-禅道id-工号

禅道 id 如下

四、项目限制

为规范所有开发成员的提交,可以通过利用git hook事件限制提交,前端项目可以通过 npm包@commitlint/cli @commitlint/config-conventional husky 来限制不规范commit提交;后台以及app端项目需要使用脚本动态添加到.git/hooks/目录中提交事件限制提交。

https://github.com/tapsellorg/conventional-commits-git-hook/blob/master/commit-msg-hook.sh