使用intellij处理git rebase时候的冲突

我们在使用git将远程分支rebase到本地分支的时候,会经常遇到冲突的情况:

处理这种conflicts的方式,一般都是要手工查看具体都有哪些文件内容有conflicts,然后一个个手工检查和处理这些conflicts。Merge & Resolve Conflicts的整个过程比较考验耐心,对两边代码冲突的理解。intellij针对这个过程集成了工具,可以辅助我们完成工作。在上面的conflicts产生后,在intellij里面打开项目:

如上图所示,点击项目窗口底部的Version Control,然后可以看到intellij检测到了git rebase过程当中所产生的conflicts,然后列出了具体的有冲突的文件。此时点击Resolve链接,进行具体的resolve conflicts的过程:

如上图所示,点击Resolve链接以后,会弹出Conflicts窗口:

可以看到,我们可以针对每一个有冲突的文件进行具体的处理。针对每一个有冲突的文件,我们有三种选择,分别是:

前两种比较简单粗暴,就是直接用rebase两边有冲突的branch的其中一边去覆盖另一边。第三种Merge...则是做具体的处理。我们点击Merge...,就可以进入手工解决冲突的窗口:

如上面窗口所示,左边是本地的代码版本,右边是待合并的分支版本,中间是最终人工检查并合并后的版本。注意到intellij会把两边版本有冲突的代码部分用红色标记出来。因此我们要做的就是一个个检查这些冲突的地方,然后根据对代码的理解去解决这些冲突。所以工具使用只是辅助,最终还是要落实到人的工作上。等全部冲突都搞定以后,就可以点击窗口右下角的Apply按钮来保存合好的代码:

以上就是使用intellijmerge conflict的一个过程。