什么是最好的三向合并工具?

Dan*_*ich 258 version-control merge dvcs

Subversion,Git,Mercurial和其他人支持三方合并(结合我的,他们的和"基础"修订版)并支持解决冲突的图形工具.

你用什么工具?Windows,Mac OS X,Linux,免费或商业,您可以命名.

以下是我用过或听过的一些内容,只是为了开始对话:

(我知道这有点像最好的差异工具,但它的不同之处在于我明确专注于三向合并工具; 例如,WinMerge不在列表中.)

sot*_*tto 161

KDiff3 开源,跨平台

适用于Linux和Windows的相同界面,用于解决冲突的非常智能算法​​,用于自动解决冲突的正则表达式,与ClearCase,SVN,Git,MS Visual Studio集成,可编辑合并文件,比较目录

它的键盘导航很棒:ctrl-arrows导航差异,ctrl-1,2,3进行合并.

另请参阅/sf/answers/170413771/

在此输入图像描述

  • KDiff3的更多优点:适用于Linux和Windows的相同界面,用于解决冲突的非常智能的算法,用于自动解决冲突的正则表达式,与ClearCase,SVN和Git集成,可编辑的合并文件,比较目录. (10认同)
  • @ThomasS这不是真的,请参阅[其他`kdiff3`答案](http://stackoverflow.com/a/2434482/42473)作为示例.`kdiff3`会愉快地区分和合并整个目录树,并且已经做了很多年!某些工具(例如`git`)可能只能按文件启动它,但其他工具(如mercurial)将很乐意允许您进行三向差异/合并整个存储库. (3认同)
  • 2016年有没有人对这个答案有意见? (3认同)
  • 它自2014年以来不受支持 (3认同)
  • @RuslanK。似乎仍然支持:https://github.com/KDE/kdiff3/graphs/commit-activity (3认同)
  • 当局部和其他变化的线数增加时,KDiff3很糟糕; 如果在本地你添加了行A,B和C,但另一个更改只添加了A和C,那么KDiff3计算出添加了A,然后发现B与C冲突,然后无论如何都添加C. (2认同)
  • @Shadoninja,2020 年我仍然是 KDiff3 的忠实用户。我从未找到一个足以让我改变的功能。 (2认同)
  • 一件不好的事情是,Kdiff3 的开发似乎自 2014 年以来就停止了。Meld 在 2020 年仍在积极开发中。 (2认同)
  • 可以在 [KDE.org](https://download.kde.org/stable/kdiff3/) 下载较新的版本 (2认同)

Dan*_*rza 104

刚刚检查了P4merge,因为我在另一篇博客文章中听说过:

在此输入图像描述

非常光滑的界面,免费!我一直是忠实的Araxis Merge用户,但考虑到这是免费且非常棒的,我建议您查看一下.

  • @Art:当然你可以在P4Merge中编辑合并结果.我一直这样做! (35认同)
  • @ DH4我刚收到Perforce官方支持的电子邮件,P4Merge**免费用于商业用途**(我为MS工作,它没有比这更多的企业;)) (21认同)
  • 它适用于Windows,Mac,Linux,FreeBSD和Solaris 10 (11认同)
  • p4merge也不是企业的"免费".许可证仅限商业用途. (8认同)
  • 我认为你不能在P4Merge中编辑合并结果,这是一个很大的缺点 (7认同)
  • P4merge中没有文件夹比较支持.这对P4Merge来说是一个非常好的补充. (3认同)
  • git integration:git config --global merge.tool p4merge; git config --global mergetool.p4merge.cmd"p4merge $ BASE $ LOCAL $ REMOTE $ MERGED".(假设p4merge.exe在你的路径中.添加-dw选项以忽略空格.) (2认同)
  • 显然 P4merge 现在被称为“Helix Visual Merge Tool”。在此链接中,它被称为“Helix P4Merge 和 Diff 工具”,但当您下载时,它是另一个名称:https://www.perforce.com/products/helix-core-apps/merge-diff-tool-p4merge (2认同)

Jos*_*non 95

超越比较3 Pro支持三向合并,它是一个非常令人印象深刻的合并工具.它是商业的(但值得一提,恕我直言),可在Windows,Linux和Mac OS X上使用.

正如评论中指出的那样,它也很便宜.

在此输入图像描述

注意:如果没有合并集,即合并驻留在目标文件中的标记,Beyond Compare不提供三向文件比较/编辑.Beyond Compare 表示该功能已列入其名单.

注意:3向合并仅是Beyond Compare 3专业版中的一项功能

  • +1 Beyond Compare很容易付出代价,特别是当你考虑它的其他功能时. (16认同)
  • 迈克尔,我不确定你的意思.Beyond Compare对差异化文件夹提供了很大的支持:http://www.scootersoftware.com/moreinfo.php. (9认同)
  • 它在[他们的网站](http://www.scootersoftware.com/moreinfo.php?zz=newfeatures)上清楚地显示 - 状态专业版的更新答案是3向合并的要求 (4认同)
  • 很好,但不支持选择文件夹 (2认同)
  • Beyond Compare 4 Pro添加了文件夹合并支持. (2认同)
  • 为什么要在 Kdiff 上使用 BeyondCompare?我完全赞成为一个好的工具付费,我只是不确定是什么让 BeyondCompare 变得更好。另见 http://softwarerecs.stackexchange.com/questions/32594/3-way-merge-tool-for-c-sql-javascript-development-on-windows-beyondcompare-or (2认同)

Eli*_*jah 73

Meld Diff Viewer

我和Meld一起工作的经验很丰富.当我必须在分支之间进行混乱的代码合并时,我会使用它.它使用简单,界面干净.

  • 开源
  • Linux,Windows和MacOS支持
  • 多个文件差异
  • 三向比较支持

在Ubuntu中,安装非常简单: sudo apt-get install meld

在此输入图像描述

  • 不幸的是,Meld是*NOT*三向合并工具(即使他们在主页上说明了这一点).对于三向合并,您需要_FOUR_windows(基本文件).但我喜欢融合,工作得很好. (63认同)
  • Meld有缺陷,其视觉线索具有误导性. (14认同)
  • @lzap,实际上是meld*是*三向,但它没有记录,大约一个月前我注意到他们完全删除了3向合并:http://is.gd/prKX5d如果你坚持使用旧版本足够的版本你仍然很幸运. (8认同)
  • Meld甚至没有正确使用git. (6认同)
  • +1 Meld是光滑,干净,"足够"的软件. (3认同)
  • 截至今天,Meld 在相当长一段时间内可靠地支持 3way diff,并且在 Windows 上开箱即用运行了相当长一段时间(除了之前的评论中指出的之外)。评论中描述的故障(希望至少根据我的经验)也已成为过去。 (3认同)

Pau*_*ham 43

Vimdiff可以.这很棒.你需要的只是一个三英尺宽的窗户.

在此输入图像描述

  • 花了一些时间弄清楚你可以做"gvimdiff -O branch1.txt base.txt branch2.txt merge.txt"并使用ctrl + w J将合并缓冲区移动到屏幕的底部.这是你如何使用它? (9认同)
  • downvote,它并没有真正解决冲突,它只是差异. (7认同)
  • @piotr vimdiff确实解决了冲突.您可以使用命令"diffg <bufferNum>"在底部窗格中构建合并文件.buttom合并窗格是缓冲区1,其他窗格是顶部的2,3,4.要跳转到差异,请使用[c和] c.这是debian wheezy 7.7的开箱即用功能. (6认同)
  • vimdiff现在有很好的git处理三向合并(即4个窗格) - http://vim.wikia.com/wiki/A_better_Vimdiff_Git_mergetool#Vimdiff_for_three-way_merges (3认同)

CMS*_*CMS 37

Source Gear Diff Merge:

跨平台,真正的三向合并,完全免费用于商业或个人用途.

在此输入图像描述

  • @erkfel,这是不正确的.注册是可选的,软件可以免费使用:"SourceGear DiffMerge是一个屡获殊荣的文件差异和合并工具,自2007年以来一直在帮助专业开发人员和业余爱好者.SourceGear DiffMerge被许可免费使用.但是,通过注册DiffMerge您将为新产品开发,维护和支持提供资金.作为感谢我们注册用户和鼓励其他注册的一种方式,我们在4.2中添加了一些新功能......"(在程序文本中) (2认同)
  • 自 2013 年起不再开发/更新。 (2认同)

小智 31

Araxis Merge.这是商业化的,但它非常值得......它适用于Windows和Mac OS X.

在此输入图像描述

  • 在使用Araxis很长一段时间之后,我的公司已经切换到KDiff3,原因如下:(1)当Araxis中的合并被取消时,文件仍然在TortoiseHg中被标记为已解决.(2)Araxis在"合并结果"窗格中显示基本修订和合并结果的混合,这经常令人困惑.(3)如果可以的话,从TortoiseHg KDiff3将自动合并而无需用户交互.(4)KDiff3的合并算法似乎做得更好.但是我们仍然使用Araxis作为我们的比较工具:) (6认同)
  • 同意,这是我用过的最好的. (4认同)
  • Araxis为+1.我愿意付出很多钱供个人使用的少数工具之一.其他一切都混乱,混乱,相形见绌(双关语). (2认同)
  • 正如其他答案的评论中提到的,正确的三向合并工具有 4 个面板 - 基本面板、本地面板、远程面板和_结果_。Araxis 将基础和结果混为一谈,这可能会导致问题。 (2认同)

nev*_*ves 27

Kdiff3冲突解决算法确实令人印象深刻.

即使颠覆表明存在冲突,Kdiff3也会自动解决.Windows和Linux的版本具有相同的界面.可以将它与Tortoise和你的linux shell集成.

它位于我最喜欢的开源软件列表中.我在任何机器上安装的第一个工具之一.

您可以将其配置为Subversion,Git,Mercurial和ClearCase中的默认差异工具.它还解决了几乎所有的ClearCase冲突.在Windows中,它与Windows资源管理器有很好的集成:选择两个文件并右键单击以进行比较,或者右键单击"保存到以后"文件,然后选择另一个进行比较.

合并的文件是可编辑的.有光滑的键盘快捷键.

您还可以使用它比较和合并目录.看到: Kdiff3比较目录

高级功能是使用正则表达式来定义自动合并.

我唯一的烦恼是,如果你喜欢的发行版存储库中没有它,那么编译有点困难.

  • 我同意合并算法。它令人难以置信的复杂,似乎奇怪地以其他工具无法做到的方式“知道”您想做什么。它会定期粉碎diff3和Subversion(blarg),甚至可以对Git合并有所帮助。 (2认同)
  • @chrispepper1989,我今天仍然在 Git 中使用 KDiff3。我从未找到过比 KDiff3 明显更好的 3 路合并应用程序。P4Merge 有一个更现代的界面,但是当我测试它时,你无法编辑合并的文件(我认为你现在可以做到)。 (2认同)

jcr*_*ey3 13

我爱Ediff.它是Emacs的标准配置.

在此输入图像描述

  • 尽管我喜欢ediff,但我看到上面只有两个缓冲区... 3路合并应该有3个或4个窗口:三个被合并(本地,远程及其共同的祖先基础),以及最终的合并输出.**似乎是ediff中的3向合并(称为"ediff-merge-with-ancestor"),但我不确定它是否有3个窗格或4个,而且上面的截图也没有反映出来. (6认同)

MrT*_*lly 11

Ultracompare.它非常好,处理大文件(超过1 GB),可用于Windows/Mac/Linux,并且它是商业的,但它是值得的.

Windows上UltraCompare Professional的屏幕截图


小智 11

Diffuse是一种易于使用的三向合并工具.它支持您提到的所有平台和版本控制系统,并且可以同时比较三个以上的文件.

在此输入图像描述

  • 它甚至支持同时比较N个文件!如果您需要比较来自许多同类应用程序的配置文件,这会派上用场. (2认同)

Mar*_*son 6

xxdiff如果你在Linux的土地上.

在此输入图像描述