• 本文前提:本地和远程存在master、test、dev三个分支,并且一一对应,本地dev开发完成后,要合并到test,test测试完成后合并到master

1、从dev合并到test

正常的场景中,master和test两个分支是禁止普通开发人员直接push的,现在讨论的是具有权限的人员的操作。

在开发当中无论是否要合并分支,无论在哪个分支,注意本地分支要在commit以后push到远程,要首先保持同一个分支的一致性。

1 首先切换到dev分支,执行commit和push

2 有权限的人员在每个分支 git pull 拉取所有代码以后,从dev转到test
git checkout test

3 然后从dev合并到test
git merge dev

注意:这种合并一般情况下使用的是快进模式(Fast-forward),也就是直接把test指向dev的当前提交,
所以合并速度非常快。但这种模式下,删除dev分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。命令如下:
git merge --no-ff -m "merge dev to test with no-ff" dev

因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
建议开发中都用这种 no-ff 模式

4 现在本地dev已经合并到test了,下面把本地test的变化提交到远程(当前在test分支):
git push

我们在远程服务器上面看一下test分支的网络图:

2、从test合并到master

操作流程和前面的差不多:

1 git checkout master

2 git merge --no-ff -m "merge test to master with no-ff" test

3 git push

我们在远程服务器上面看一下master分支的网络图:

3、其它情况

有时候在远程仓库私服上面禁止了所有人的push操作,那合并分支只能在私服页面上进行,
这种操作一般也是由权限高的人进行的

不过gitlab在这方面很多老版本都有问题,会出现报错页面,大家可以多试几次。。。


郭艺宾
57 声望16 粉丝