在工做中使用Git已有5年多的时间了,Git分布式的工做机制以及强大的分支功能使得在团队中推广使用没有受到什么阻碍。一直以来都是采用的分支管理模式,我把项目的开发分为三个阶段:开发、测试和上线。centos
开发人员在dev分支上进行工做,随时随地commit,天天push一次到服务器;服务器
push代码前须要进行pull操做,由于有可能在以前有别的成员先进行了push操做,若是有冲突还须要进行冲突解决;分布式
天天上班后全部成员对dev进行pull操做,获取全部成员push的代码,有冲突须要解决;工具
团队Leader天天将dev合并一次到master。测试
测试进入后就须要添加test分支;优化
在开发人员将代码push到dev分支后,能够在dev基础上建立test分支,测试人员以test分支搭建测试环境,开始测试;spa
开发人员在接受到bug后,直接在测试分支上修改,而后让测试人员进行验证;3d
天天团队Leader将测试分支上修改的bug合并到dev分支上,这样全部团队成员当天修复的bug都会在次日被团队其余人pull下来;blog
团队Leader天天将dev合并一次到master。开发
系统上线后试运行阶段会存在两种改动:bug和优化需求,bug一般当天解决晚上部署,优化需求一般周末部署;
bug当天能修复的就直接在test分支上修复,而后进行测试,验证经过后合并到master;
bug当天不能修复的就针对该bug建立一个分支,修复完后合并到test分支进行测试,验证经过后合并到master;
每一个优化需求都以master分支为基础建立一个feature分支,完成后合并到dev分支,开发人员能够先交叉测试,而后将dev合并到test进行测试,验证经过后合并到master;
master始终是一个干净的,可发布的分支。
一直以来,都以为Merge Request模式高不可攀,只有作开源软件才会采用这种模式,没想到这么快就已经在团队中开始推行使用了,先看一张图来了解下Merge Request的开发流程:
虽然Issue不支持多层级,但结合里程碑、标签等仍是能够很好的对任务和Bug进行管理;
管理员和团队成员均可以进行Issue的建立;
任务的接收者对Issue建立Merge Request;
完成任务后推送代码到Merge Request对应的分支;
管理员对代码进行Merge。
相比较传统的分支管理模式,Merge Request能够给咱们带来下面几个好处:
每一个任务都有一个对应的分支,互相隔离,全部的代码改动有据可查;
开发人员不用在分支间切换和合并,更专一于开发。
下面以一个示例来介绍Merge Request的工做流程
一、设置重要分支受保护
在上图中的位置能够将全部的重要分支设置为受保护,重要的分支一般是master、release、test等。
二、建立Issue
任务建立后,开发人员就能够对该任务建立Merge Request了,以下图:
三、使用你熟悉的工具拉取Merge Request对应的分支到本地进行代码修改,修改完成后,Push代码到服务器,代码推送后,管理员在Merge Request页面能够看到Merge按钮,以下图:
点击右边的Resole WIP status后,Merge按钮就可使用
若是勾选Remove source brance,当Merge后,服务器端会删除建立的分支。Merge完成,会关闭关联的任务,但并非每一次推送均可以很是顺利,有时会有冲突,当本地代码和服务器代码不一致时,会出现解决冲突的按钮,解决冲突后才能进行Merge
代码Merge后,开发人员就能够按照一样的流程作下一个任务了。
原文出处:fwhyy -> http://www.fwhyy.com/2018/06/Use-the-Merge-Request-working-mode-in-GitLab-in-the-team/