idea- 如何解决代码合并冲突?
背景
合并不同分支代码的时候,可能修改了同一行代码,然后合并的时候,就会出现冲突。
怎么解决呢?
先选择目标端分支

开始合并

选择源端分支 dev
出现冲突

现在有冲突。因为 2 个分支修改了同一行代码,导致代码冲突。
解决冲突

有冲突,如何解决?
上面的截图里的说明,就很好的说明了,大概是怎么合并冲突代码的。
其实就是分几大块
左边是 master 分支
右边是 dev 分支
中间是最终的合并结果
具体怎么合并呢?
直接看飘红的地方,想要保留哪个分支的代码,直接点击红色的移动箭头即可;如果不要哪个分支的修改,直接点击红色的叉箭头即可。
或者,2 个分支的代码都要,也可以,那就都点击红色的移动箭头接口。
如果都移动过来,发现代码合并有点问题,可能需要手动的微调一下顺序或者位置即可。一般情况下,连顺序和位置都不需要微调,直接就合并成功了。

解决冲突成功

假设现在只需要保留 master 修改,那么就点击左边 master 的红色移动箭头把修改代码移动到中间,然后点击 dev 分支的红色叉箭头,表示不需要 dev 的修改代码。
最终就是截图里的样子,如果全部冲突都已经解决完成,就会提示冲突都已经解决,点击保存即可。

保存成功,提示合并结果已经提交到本地仓库。
特别注意,刚才合并之后的结果,只是提交到了本地仓库,并没有 push 到远程仓库。所以最后一步还需要 push 本地修改到远程仓库。
另外,可以看到本地有修改还没有提交到远程仓库,其实就是刚才合并之后的结果。

push 合并结果到远程仓库

push 之后,先看下修改内容是什么?

可以看到,右边是最终的合并结果,虽然和合并之前的 master 内容是一样的,那是因为没有要 dev 的修改内容,如果要了 dev 的修改内容,这里就和之前的 master 内容不一样——所以,右边代码指的是最终的合并结果!
那左边代码是什么呢?左边代码是 master 分支的上一次提交(指最后一次提交的上一次提交)的代码。


可以看到,master 的上一次提交 id 和在 idea 里看到的左边的 id 值一样。
好了,理解之后,就可以直接 push 了。

push 成功。
版权声明: 本文为 InfoQ 作者【青乡java】的原创文章。
原文链接:【http://xie.infoq.cn/article/27171783ba4efee7b7eac89db】。文章转载请联系作者。
评论