java开发工具(13)最好用SourceTree解决冲突方案

目录

  • 一、产生冲突的原因
  • 二、冲突文件标识
  • 三、SourceTree提供的冲突解决办法
  • 四、启用外部合并工具
  • 五、Araxis Merge
  • 六、总结

上篇博文,我们讲了SourceTree提交代码的方式,其中涉及到提交的时候,如果有代码冲突,我们如何解决,在本篇博文,就细细道来,希望通过此篇博文,你能完全掌握SourceTree解决冲突的方法。
一、产生冲突的原因

当同一个文件,A修改了代码,B也修改了代码,如果修改的行号有重叠的时候,就会出现代码冲突。

二、冲突文件标识

在SourceTree的提交界面,有几种标志:
SourceTree提交标志
有修改 代表有修改的内容
删除 代表删除的文件
未加入仓库 代表未加入到仓库的文件
冲突 代表有冲突的内容

三、SourceTree提供的冲突解决办法

我们右键点击有冲突的文件,会出现如下图示:
冲突解决

  • 启用外部合并工具:我们后面着重讲解
  • 使用‘我的版本’解决冲突:使用自己的本地的代码作为冲突解决的方案
  • 使用‘他人版本’解决冲突:使用git仓库中已经提交的代码作为冲突解决的方案
  • 重新合并、标记为已解决、标记为未解决没什么用处,此处可以不用管

四、启用外部合并工具

在SourceTree的Diff窗口,可以配置外部合并工具,如下图所示:
SourceTree合并工具
里面有多种合并工具可供选择:BeyondCompare、Araxis Merge、Diff Merge、File Merge等,BeyondCompare可能以前用SVN的时候有许多人用过,但关于git的代码合并,我个人并不习惯用BeyondCompare,我个人比较推荐的是Araxis Merge,这款工具的三个窗口界面比较符合代码合并的操作习惯。下面我就为你详细介绍,如何使用Araxis Merge。

五、Araxis Merge

Araxis Merge是一个可视化的文件比较、合并和同步的软件。
在此篇文章中,Araxis Merge的详细使用细节,我就不做过多赘述了,我觉得通过这篇博文介绍,你可以使用Araxis Merge自如的合并冲突就足够了。

  1. 下载和安装Araxis Merge
  2. 在上面第四节的图片中,将可视对比工具和合并工具都选择为Araxis Merge
  3. 在冲突文件右键“解决冲突”->“启用外部合并工具”,默认就会弹出Araxis Merge的合并页面,如下图:
    合并代码测试
    可以看到Araxis Merge把代码分成了三个框,
  • 左边框:远程仓库中的代码
  • 右边框:本地仓库中的代码
  • 中间:本地仓库提交之前的代码

左边框、右边框中,与本地提交之前的代码变动,都会显示红色区域块,你可以一目了然到底什么地方有了改动,你需要知道的是,最后合并后的代码中间框里面的代码。

如果你想把左边的代码合并,就点击一下左边框中的箭头,则对应的代码块自动添加的中间框中,如果想把右边框的代码合并,方法一样。如果两边的代码你都想在合并后保留,你可以手动复制粘贴到中间框中,只要你明确了一点,中间框中的代码是合并后的代码,怎么操作你就可以自己随意了。

合并完成后,在SourceTree中会有两个文件,一个是你合并后的文件,一个是合并前的原始文件有.orig后缀,合并完成后,你可以检查下合并后的文件是否有问题,如果有问题,可以重新合并,方法如下:

  1. 删除之前合并后的代码
  2. 把.orig文件的后缀去掉
  3. 右键去掉.orig后缀的文件->解决冲突->标记为未解决
  4. 重新使用启用外部合并工具的方式解决冲突。

六、总结

至此,SourceTree解决冲突的方案,就说完了,如果你还有疑问,可以在下方给我留言。
本篇博文主要说了几点:

  • 产生冲突的原因:多人开发时,两个人修改了同一文件的相同行
  • SourceTree提供的解决冲突的办法:使用我的版本解决冲突,使用他人版本解决冲突,启用外部文件解决冲突
  • 配置外部合并工具的方式
  • 使用Araxis Merge解决冲突的具体操作步骤:要点是中间框是最后合并后的文件