共计 889 个字符,预计需要花费 3 分钟才能阅读完成。
本文前提:本地和远程存在 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 在这方面很多老版本都有问题,会出现报错页面,大家可以多试几次。。。
正文完