首页 > 编程知识 正文

git合并两个分支的代码解决冲突,git合并分支到主干冲突

时间:2023-05-04 07:58:21 阅读:243023 作者:2923

下图是我的分支冲突图,在3点后,从develop分支分出一个release分支来,release分支更新了5次最后合并到了master分支,而没有往develop分支merge,所以导致master分支和develop分支版本不一样了,而由从3点出的develop分支拉出一个feature分支来,进行了两次更新,并合并到了develop分支上,此时再将develop分支merge到master的分支上就出现了版本冲突。

开始说解决步骤:

步骤1. 本地打开git GUI,本地checkout到develop上:

步骤2.点击Merge--》Local Merge

选择msater分支,注意这里是远端的master分支(Tracking Branch),点击Merge按钮进入步骤3

步骤3. 在Requires merge resolution窗口中右键 选择Use Local Version,意思就是远端的分支改用本地的版本;

Unstaged Changes中每个文件根据情况进行这样的操作,如果用远端的版本,就不执行这个右键操作,如果用本地develop的版本就执行这个右键的操作;所有文件都过完后,点击commit-->push就可以了。

补充步骤4:假如你没有往develop上push的权限,会push失败,如下图:

补充步骤5:如果出现4中的情况,需要新建一个feature分支,如下图是我建成后的分支(新建分支的方法:Branch->Create.)

然后再点击步骤3中的push按钮,选择push到新建的feature分支上。最后再在远端创建Merge请求,将feature分支Merge到Develop上。 最后再将develop分支Merge到Master上。这样就OK了。

下面是解决冲突后的分支图:

最后,提醒大家,在进行代码Merge的时候一定要先看一下远端分支图,看看自己的feature分支是不是从最新的develop分支上拉下来的,如果不是,develop要先fetch一下。而且要确保权限问题,开发者不能直接往master上Merge,而不往develop上Merge。我就是因为从develop分支上拉了一个Release分支,然后release分支Merge到了Master上,而没有Merge到Develop上,后来又从Develop上pull一个分支来改动后又Merge到develop上了,这样develop和master版本就不一样了,导致版本冲突。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。