GitFlowPlus插件

Stella981
• 阅读 708

简介

MrtfGitFlow4Idea插件是一款基于mrtf-git-flow分支管理流程的Idea插件,它最主要的作用是用来简化分支管理流程,最大限度的防止误操作。

在初始化插件之前必须先保证仓库中具有origin/master分支。

主要功能如下:

  • 插件配置文件可以加入GIT版本管理,在团队内部共享;
  • 基于origin/master新建开发分支和修复分支;
  • 基于origin/master重建测试分支和发布分支;
  • 开发完成后将开发分支合并到测试分支;
  • 测试完成后将开发分支合并到发布分支,并锁定发布分支;
  • 发布完成后将发布分支合并到origin/master分支;
  • 发布失败将解除发布分支的锁定;

主要解决的问题

  1. 新建特性分支操作过程复杂,且容易出错;
  2. 提测等环节合并代码出错,老是将测试分支代码带上线;
  3. 解决多人同时发布,将未完成预发布测试的代码带上线;
  4. 解决发布完成后忘记将代码同步到origin/master分支;
  5. 发布完成后忘记打Tag;

安装

在线安装

GitFlowPlus插件

离线安装

下载地址: https://github.com/xiaolyuh/mrtf-git-flow-4idea/releases

GitFlowPlus插件

插件入口

GitFlowPlus插件

插件入口有2个:

  1. 在Toolbar栏,这个需要显示Toolbar(View->Toolbar)
  2. 在Statusbar中

配置管理

每个仓库都需要进行插件初始化,配置完成后会生成一个git-flow-plus.config配置文件,该文件可以添加到git版本管理中进行组内同步,同步完成后组内成员可以共享配置。

GitFlowPlus插件

如果配置了钉钉机器人Token,那么在点击[开始发布]的时候,钉钉机器人会在钉钉群发布一条发布分支被锁定的消息,格式如下:

xxx 服务发布分支已被锁定,最后一次操作:

  操作人: yuhao.wang3@xxx.com;

  时间: 2020-03-27_16:38:09;

  Message: 初始化插件配置 ;

如需强行发布,请先点[发布失败]解除锁定,再点[开始发布]。

新建分支

新建开发分支和修复分支都会直接从origin/master新建分支,新建分支后会自动切换到新建后的分支。

GitFlowPlus插件

执行命令:

git fetch origin master:newBranchName
git checkout newBranchName --force
git push origin newBranchName:newBranchName --tag  --set-upstream

如果本地有修改文件未提交是不允许新建和重建分支的

重建测试分支

重建测试分支会直接从origin/master新建分支一个测试分支,原来的测试分支会被直接删除。

执行命令:

git checkout master --force
git push origin --delete rebuildBranchName
git branch -D rebuildBranchName

git fetch origin master:rebuildBranchName
git checkout rebuildBranchName --force
git push origin rebuildBranchName:rebuildBranchName --tag  --set-upstream

重建发布分支

重建发布分支会直接从origin/master新建分支一个发布分支,原来的发布分支会被直接删除。

如果当前的发布分支处于锁定状态,那么将不允许重建发布分支。

执行命令和重建测试分支一样。

提测

提测会将当前分支合并到origin/test,在合并过程中如果出现冲突并且选择未解决,那么当前分支会切换到本地test分支,等待解决冲突;如果没有任何异常情况,那么合并完成后当前分支不会发生切换。

当前分支必须是开发分支或者修复分支时,才允许提测。

GitFlowPlus插件

执行命令: 测试分支在远程和本地都不存在,会新建测试分支:

git fetch origin master:test
git checkout test --force
git push origin test:test --tag  --set-upstream

测试分支在本地不存在,会在本地新建测试分支:

git checkout -b test origin/test

测试分支存在:

git checkout test --force
git pull origin test:test
git megre featureBranchName (如果没解决冲突后面语句不执行)
git push origin test:test --tag  --set-upstream
git checkout featureBranchName --force

开始发布

开始发布会将当前分支合并到origin/release,并且锁定发布分支,如果配置了钉钉的机器人Token,那么还会往钉钉群发送一条发布分支锁定消息。

发布分支一旦锁定后,其他人将不能再进行发布,如果确实需要发布有两种解决方式:

  1. 让第一个发布人点发布完成,发布完成会将发布分支合并到origin/master,并解除发布分支锁定。
  2. 让第一个发布人点发布失败,发布失败将直接解除发布分支锁定。

GitFlowPlus插件

执行命令: 加锁

git push origin featureBranchName:GFP_LOCK_BRANCH_NAME  (返回 new branch 则成功获取锁)

获取最后一次操作人:

git show  origin/release -s --format=Author:%ae-Date:%ad-Message:%s --date=format:%Y-%m-%d_%H:%M:%S

发布分支在远程和本地都不存在,会新建发布分支:

git fetch origin master:release
git checkout release --force
git push origin release:release --tag  --set-upstream

发布分支在本地不存在,会在本地新建发布分支:

git checkout -b release origin/release

发布分支存在:

git checkout release --force 
git pull origin release:release
git megre featureBranchName (如果没解决冲突后面语句不执行)
git push origin release:release --tag  --set-upstream
git checkout featureBranchName --force

发布完成

发布完成会将发布分支合并到origin/master,并解除发布分支锁定,必须打Tag;

GitFlowPlus插件

执行命令: 先fetch在判断发布分支是否处于锁定状态:

git fetch origin 

主干分支在本地不存在,会在本地新建主干分支:

git checkout -b master origin/master

主干分支存在:

git checkout release --force
git pull origin release:release
git checkout master --force
git pull origin master:master
git merge release   ['release_1' merge into 'refs/heads/feature/111'] (如果没解决冲突后面语句不执行)
git tag -a -f -m message tagName
git push origin master:master --tag  --set-upstream 
git checkout featureBranchName --force 
git push origin --delete GFP_LOCK_BRANCH_NAME(解锁)

发布失败

直接解除发布分支锁定。

GitFlowPlus插件

执行命令: 先fetch在判断发布分支是否处于锁定状态:

git fetch origin (更新本地仓库缓存)

解锁

git push origin --delete GFP_LOCK_BRANCH_NAME(解锁)

帮助

点击帮助会直接跳转插件首页

作者信息

作者信息

作者博客:https://xiaolyuh.blog.csdn.net/ 作者邮箱: xiaolyuh@163.com
github 地址:https://github.com/xiaolyuh/layering-cache 插件地址:https://plugins.jetbrains.com/plugin/14056-gitflowplus

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这