Git分支管理文档

11 篇文章 1 订阅
5 篇文章 0 订阅

背景

分享一下,我在项目里是怎么使用git分支管理的

一、分支管理方式

Git分支管理.png
分支介绍:

  • feature_*分支:需求开发分支
  • dev分支:本地测试分支
  • uat分支:客户测试分支
  • release_*分支:发布分支
  • master分支:主分支
  • hotfix_*分支:热修复分支

其中dev、uat、master分支为长期分支,feature_、release_、hotfix_*为临时分支
简述基本流程:
1、开发从master分支拉取出feature分支;
2、开发在feature分支上做需求开发或bug修复;
3、开发将feature分支合并到dev分支,测试打包发布dev分支到测试环境进行测试;
4、开发将测试通过的feature分支合并到uat分支,运维打包发布uat分支至uat环境,客户在uat分支进行测试;
5、在确认发布生产时,开发leader从master分支拉取出release分支用于发布;
6、开发将uat测试通过的feature分支合并到release分支中,运维打包发布release分支至生产环境;
7、在观察生产环境没有问题之后,开发leader将release分支合并到master分支;
简述热修复流程:
1、如果发现生产版本有bug需要紧急修复,开发从master分支拉取出hotfix分支;
2、开发在hotfix分支中进行bug修改,修复后合并至dev分支进行测试,测试通过后,用hotfix分支进行生产版本发布,并将hotfix分支合并至uat、master分支中;

二、具体操作流程

1、(开发或者开发leader操作)开发从master分支拉取出feature分支

这里有两种方式,一种是在GitLab上进行拉取,一种是在IDEA中进行拉取

1.1、在GitLab上如何新建远程分支

首先登录GitLab,然后选择对应的项目
图片.png图片.png图片.png

1.2、在IDEA里创建新的远程分支

在IDEA右下角选择打开Git的Branches,然后选择远程分支中的master分支,再选择New Branch from Selected…
图片.png
在弹窗中填写分支的名称,并点击Checkout
图片.png
注意,此时只是创建了本地的分支,远程分支中还不存在该分支
图片.png
下面选择这个本地分支,进行push
图片.png
在弹窗中选择push,将本地分支推送到远程,相当于创建了远程分支
图片.png这时候远程分支里就多出了这个新的分支
图片.png

1.3、如果远程分支是在GitLab上创建,或者由别的开发创建的,那么该如何获取这个远程分支并将其拉取到本地呢

如果分支是在GitLab上创建,或者由别的开发创建,我们在IDEA的Branches中找不到,该怎么办,按照下图中的操作,选择Fetch或者右上角的更新都可以
图片.png如何将远程分支拉取到本地呢,在IDEA的Branches中选择远程分支,点击Checkout
图片.png
可以看到将远程分支拉取到了本地,并自动切换到了这个分支上
图片.png

2、(开发操作)开发在feature分支上做需求开发或bug修复

开发在本地的feature分支上进行开发或者bug修复,之后进行commit和push,这里要注意,commit只是提交到本地分支上,push才会将本地的变动推送到远程分支,具体操作如下,在Local Changes里选中需要提交的文件,右击选择Commit File…
图片.png填写备注信息,选择Commit或者Commit and Push…,根据自己的需要,如果只是commit,之后要记得一起push
图片.png

3、(开发操作)开发将feature分支合并到dev分支,测试打包发布dev分支到测试环境进行测试;

3.1、前提是feature中的代码已经push到了远程分支,先将远程dev分支,Checkout到本地来,如果已经存在本地的dev分支了,那么就切换到本地dev分支,并更新最新的代码

3.2、确保IDEA中现在的分支是dev分支(目标分支),然后选择feature分支(源分支),选择Merge into Current

图片.png

3.3、执行完上述操作后,相当于将feature分支上的改动在dev本地分支上Commit了,下面要做的就是将dev本地分支push到远程分支上

图片.png

4、(开发操作)开发将测试通过的feature分支合并到uat分支,运维打包发布uat分支至uat环境,客户在uat分支进行测试;

参考第3步

5、(开发leader操作)在确认发布生产时,开发leader从master分支拉取出release分支用于发布;

参考第1步

6、(开发操作)开发将uat测试通过的feature分支合并到release分支中,运维打包发布release分支至生产环境;

参考第3步

7、(开发leader操作)在观察生产环境没有问题之后,开发leader将release分支合并到master分支;

参考第3步

三、特殊场景如何处理

1、如果开发在第4步的时候发现,feature分支中有部分功能没有通过测试,不可以上线到uat,但其他通过的功能需要上线到uat,怎么办

首先,把本地分支切换到目标分支上(这里代表uat分支);
然后在IDEA的log操作栏中选择源分支(这里代表feature分支),右击选择Cherry-Pick,这样就会将这个log中commit的代码,拉取到本地uat分支,并commit;
图片.png图片.png然后将本地uat分支push到远程uat分支;

2、本地分支,如果commit错了,想回滚怎么办

在log操作栏中右击想要回退的commit日志,选择Revert Commit或者Undo Commit,Revert Commit是会再生成一条相反的提交,Undo Commit是将提交回退到未提交状态,Undo Commit只能针对最后一条日志
图片.png

3、远程分支,如果想要回退到历史的版本,怎么操作

在log操作栏中选择想要回退的commit日志,右击选择Reset Current Branch to Here…
图片.png在弹窗中选择Hard,点击Reset
图片.png
然后push本地分支,选择Force Push
图片.png注意:Force Push需要慎用,如果你在其他人推送更改之前进行Force push,会覆盖他们的更改。这可能会导致合并冲突和数据丢失

四、Merge和Rebase如何选择

1、下游分支更新上游分支内容的时候使用Rebase

比如我从master上拉取了一个feature分支,一段时候过后,master分支上有代码改动,feature分支上也有代码改动,而这时候,我需要把master的变更拉取到feature分支上,就需要用Rebase,具体操作如下

  • 将IDEA的当前分支切换成feature分支;
  • 在Branches中选择master分支,再选择Rebase Current onto Selected;
  • 最后再push;

图片.png

2、上游分支合并下游分支内容的时候使用Merge

这个没什么好说的,feature分支往dev、uat、release分支合并时,选择Merge

3、更新当前分支的内容时一定要使用Rebase

比如,现在有个feature分支,有两个开发同时在这个分支上开发,A开发拉取了最新的代码,并开始修改代码了,这时候B开发已经完成自己的开发并且Commit和Push了,这时候分两种情况:
1、A开发需要依赖B开发的代码,他需要更新分支,这时候需要选择Rebase,参考如下步骤
图片.png这个默认选中Rebase可以在Setting中设置,具体看下图
图片.png
2、A开发并不知道B开发已经push了代码,A开发push代码时,也会弹出窗口让选择Merge还是Rebase,也需要选择Rebase,如下图
图片.png

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天进步亿点点的小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值