最好的三向合并工具是什么?[关闭]


272

Subversion,Git,Mercurial和其他支持三向合并(合并我的,他们的和“基本”修订版),并支持解决冲突的图形工具。

您使用什么工具?您可以命名为Windows,Mac OS X,Linux(免费或商用)。

为了使对话开始,以下是我曾经使用或听说过的一些信息:

(我知道这有点像Best Diff Tool,但不同之处在于我明确地专注于三向合并工具;例如,WinMerge不在列表中。)



4
实际上,WinMerge与VCS工具确实具有3种方式的比较,您只需要将3个文件(left,right,result)作为参数传递给命令行即可完成此工作。
Zilvinas 2014年

3
很难说什么是最好的合并工具,因为它取决于主观因素。但是,如果您正在寻找一个标志着差异的功能,请尝试语义上的
合并.com

28
如何解决这个问题不是建设性的呢?它有182个投票,123个星星和11个答案,显然很多人认为它具有建设性。
HelloGoodbye

3
@Shuklaswag与我的问题有什么关系?我想知道为什么它被封闭为“非建设性的”。
HelloGoodbye

Answers:


167

KDiff3 开源,跨平台

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

它的键盘导航功能很棒:ctrl箭头可导航差异,ctrl-1、2、3进行合并。

另请参阅https://stackoverflow.com/a/2434482/42473

在此处输入图片说明


10
KDiff3的更多优点:Linux和Windows具有相同的界面,用于解决冲突的非常智能的算法,用于自动解决冲突的正则表达式,与ClearCase,SVN和Git集成,可编辑合并文件,比较目录。
neves 2013年

3
@ThomasS这是不正确的,请参见其他kdiff3答案作为示例。kdiff3将愉快地差异化并合并整个目录树,并且已经做了很多年了!某些工具(例如git)只能按文件启动它,但是其他工具(例如mercurial)将很乐意允许您对整个存储库进行三向比较/合并。
Mark Booth

2
当本地更改和其他更改的增加的行数不同时,KDiff3会很糟糕。如果在本地添加行A,B和C,但其他更改仅添加了A和C,则KDiff3会得出添加了A的信息,然后发现B与C发生冲突,然后仍然添加C。
尼尔

3
有人在2016年对此答案有意见吗?
Shadoninja '16

4
它从2014年开始不支持
鲁斯兰K.

106

自从我在另一篇博客文章中听说P4merge以来,就刚刚签出它:

在此处输入图片说明

界面非常漂亮,而且免费!我曾经是Araxis Merge的忠实用户,但是考虑到这既免费又很棒,我建议您检查一下。


11
它适用于Windows,Mac,Linux,FreeBSD和Solaris 10
Grant Limberg,2009年

36
@Art:您当然可以在P4Merge中编辑合并结果。我一直都在做!
Sklivvz

9
对于企业而言,p4merge也并非“免费”。该许可证仅限于商业用途。
DH4

21
@ DH4我刚刚收到来自Perforce官方支持的电子邮件,并且P4Merge 免费用于商业用途(我为MS工作,没有比这更多的业务;)
Ohad Schneider 2014年

4
P4merge不支持文件夹比较。这对P4Merge来说确实是一个很棒的补充。
RuntimeException

95

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

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

在此处输入图片说明

注意:如果没有合并集,也就是说,合并标记驻留在目标文件中,则Beyond Compare不提供三向文件比较/编辑。Beyond Compare 表示该功能已列入他们的清单

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


16
+1超越比较很容易值得,特别是当您考虑到它的其他功能时。
jamiei 2009年

2
很好,但是不支持选择文件夹
Michael Fitzpatrick

9
迈克尔,我不确定你的意思。Beyond Compare对差异文件夹具有强大的支持:scootersoftware.com/moreinfo.php
布鲁斯·克里斯滕森

4
他们的网站上明确指出-3路合并需要国家专业版的最新答案
Joshua McKinnon

2
Beyond Compare 4 Pro添加了“文件夹合并”支持。
克里斯·肯尼迪

75

混合差异查看器

与Meld合作时,我只有很好的经验。我必须在分支之间进行混乱的代码合并时使用它。它使用简单,界面干净。

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

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

在此处输入图片说明


3
+1 Meld是流畅,干净,“足够”的软件。
Trevor Bramble

15
Meld有缺陷,其视觉线索具有误导性。
2011年

6
Meld甚至无法正确使用git。
slikts

65
不幸的是,Meld 不是三向合并工具(即使他们在首页上也说明了这一点)。对于三向合并,您需要四个窗口(基本文件)。但是我喜欢融合,效果很好。
lzap 2012年

8
@lzap,实际上三向融合,但没有记录,一个月前,我注意到他们已经完全删除了三向合并:is.gd/prKX5d如果您坚持使用足够老的版本,那么您仍然运气不错。
Magnus

45

维姆迪夫 这很棒。您只需要一个三英尺宽的窗户。

在此处输入图片说明


11
花了一些时间弄清楚您可以执行“ gvimdiff -O branch1.txt base.txt branch2.txt merge.txt”,并使用ctrl + w J将合并缓冲区移至屏幕底部。这是你的用法吗?
Wim Coenen,

差不多,除了我使用vim而不是gvim。
Paul Beckingham,2009年

7
downvote,它并不能真正解决冲突,只是比较而已。
piotr

3
vimdiff现在具有用于三向合并(即4个窗格)的不错的git处理-vim.wikia.com/wiki/…–
Sonia Hamilton,

8
@piotr vimdiff确实可以解决冲突。您可以使用命令“ diffg <bufferNum>”在底部窗格中生成合并的文件。buttom合并窗格是缓冲区1,其他窗格的顶部分别是2,3,4。要跳至差异,请使用[c和] c。这是debian wheezy 7.7的现成功能。
ikky

37

源齿轮差异合并

跨平台,真正的三路合并,对于商业或个人使用都是完全免费的。

在此处输入图片说明


1
我已经使用DiffMerge多年了并且喜欢它。但是,我读了这篇博客文章,作者正在研究diff-merge工具,并将列表缩小到DiffMerge和P4Merge。他最终选择了P4Merge只是因为它具有更好的界面。我今天才刚开始使用P4Merge,我必须同意。特别是,DiffMerge不能很好地显示更改-将它们显示为删除和插入。如果附近有许多更改,这可能会造成混淆。P4Merge可以更好地显示它。
西蒙·图西

1
我看到diffmerge 不是免费的,它的价格为19美元
erkfel

3
@erkfel,那是不正确的。注册是可选的,软件是免费使用的:“ SourceGear DiffMerge是屡获殊荣的文件差异和合并工具,自2007年以来一直在帮助专业开发人员和爱好者。SourceGear DiffMerge获得免费使用许可。但是,通过注册DiffMerge您将为新产品的开发,维护和支持提供资金。为了感谢我们的注册用户并鼓励更多注册,我们在4.2 ...中添加了一些新功能...(在计划文本中)
Muhd 2014年

1
与P4Merge(我现在在git中进行差异化和合并)相比,在DiffMerge中发现有用的一件事是,它与Windows File Explorer集成在一起。特别是,我可以记住一个文件夹中的文件,然后将记住的文件与另一个文件夹中的文件进行比较。我发现这可能每月有用一次或两次,在这里我不必将两个文件移到同一文件夹中以进行比较(例如不在源代码控制下的SQL脚本)。
西蒙·图西

1
@SimonTewsi:Mac的P4Merge不需要文件位于同一文件夹中。它使您可以浏览文件系统,并从计算机上的任何位置选择基本文件,第一文件和第二文件。
史蒂夫·塞缪尔斯

32

轴合并。它具有商业意义,但值得这么做……它适用于Windows和Mac OSX。

在此处输入图片说明


5
同意,这是我用过的最好的。
丹·奥尔森,2009年

1
我的观察:处理5MB左右的大文件时,它相对较慢。
Naga Kiran

3
+1为Araxis。我愿意为个人使用而支付高昂金钱的少数工具之一。相比之下,其他所有事物都显得混乱,混乱和苍白(双关语意)。
丹·埃斯帕萨

8
在长期使用Araxis之后,由于以下原因,我的公司改用KDiff3:(1)在Araxis中取消合并后,该文件仍被标记为已在TortoiseHg中解析。(2)Araxis在“合并结果”窗格中显示了基本修订版本和合并结果的混合,这经常造成混淆​​。(3)如果可以,从TortoiseHg KDiff3将自动合并而无需用户交互。(4)KDiff3的合并算法似乎做得更好。但是,我们仍然使用Araxis作为比较工具:)
Michael

2
正如评论中提到的其他答案一样,适当的3向合并工具具有4个面板-基本,本地,远程和结果。轴使基准和结果变平,这可能会导致问题。
neonblitzer

27

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

即使Subversion表示冲突,Kdiff3也会自动解决。Windows和Linux的版本具有相同的界面。可以将其与Tortoise以及您的linux shell集成。

它在我最喜欢的开源软件列表中。我在任何计算机上安装的第一批工具之一。

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

合并的文件是可编辑的。具有漂亮的键盘快捷键。

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

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

我唯一的烦恼是,如果您最喜欢的发行版存储库中不存在该文件,则很难编译。


3
我同意合并算法。它令人难以置信的复杂,似乎奇怪地以其他工具无法做到的方式“知道”您想做什么。它会定期粉碎diff3和Subversion(blarg),甚至可以对Git合并有所帮助。
kevinarpe 2014年

下一步要选择a / b / c的键盘快捷键在哪里?
2015年

@mylord:使用小的自动前进延迟和快捷键Ctrl-1 / 2/3来选择A / B / C,以解决许多冲突。
neves

有什么替代KDiff3的吗?它的大用户,但我发现自己
最近

1
@ chrispepper1989,今天我仍然在Git中使用KDiff3。我从未发现过一种比KDiff3更好的3向合并应用程序。P4Merge具有更现代的界面,但是当我对其进行测试时,您无法编辑合并的文件(我想您可以立即进行操作)。
neves

13

爱埃迪夫。它是GNU Emacs内置的。

要进行三向比较,请使用ediff-files3(用于选择三个文件)或ediff-buffer3(用于选择三个已经打开的缓冲区)。您将看到一个如下所示的屏幕:

emacs中的三向差异

请注意单词差异高亮显示。

你可以打np去下一个/上的diff,而ab将区域从缓冲区中(最左边的一个)复制到缓冲区B(中间的一个),同样对其他两个字母的组合abcrb将恢复缓冲区b中的区域。点击?以获取快速帮助菜单,或阅读有关Emacs中diff3合并的精美手册


6
就我所喜欢的ediff而言,我只看到上面的两个缓冲区...三向合并应该有3或4个窗口:三个被合并(本地,远程和它们的共同祖先),最后是合并输出。有确实似乎是在ediff 3路合并(所谓的ediff-merge-with-ancestor),但我不知道它有3个窗格或4,并且还上面的截图中并没有反映这一点。
ShreevatsaR 2013年

编辑以显示三向差异@ShreevatsaR
取消关注'19

@unhammer谢谢,这是更好的方法,但是它仍然只显示3个窗口,因此尚不清楚这是一个真正的3向差异(它将具有4个窗口;请参阅kdiff3和其他示例)。如果屏幕快照中显示的是三件事正在合并,那么输出在哪里?
ShreevatsaR

您将破坏性地修改一个(或多个!)缓冲区。这就是为什么我提到ab将区域从缓冲区a复制到缓冲区b的原因。我认为还没有四窗口版本ediff。(我知道emerge使用专用的输出缓冲区来代替,但emerge-files-with-ancestor显示祖先,仅使用它通过查看哪个祖先同意来猜测正确的版本。)
锤碎了

11

超比较。它确实非常好,可以很好地处理大文件(大于1 GB),可用于Windows / Mac / Linux,并且已经商业化,但这是值得的。

Windows上的UltraCompare Professional的屏幕截图


我不知道如何设置它以支持三向合并...它可以在中间显示基本文件,在左右显示2个更改的文件,所以我可以看到两个文件在基于基本文件的基础上进行了哪些更改文件,并且底部有2个更改的文件的合并结果?我正在使用UltraCompare 17.0
Ricky,

1
稍作搜索发现此ultraedit.com/support/tutorials-power-tips/ultracompare/…-在第6步高级合并中讨论了3种方式的合并。
MrTelly

11

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

在此处输入图片说明


2
它甚至还支持同时比较N个文件!如果您需要比较来自许多同类应用程序的配置文件,这将很方便。
庇护·雷德

我对三个以上的文件进行比较时使用了Diffuse
Mohas


4

总结是,我发现ECMerge是一个很棒的产品,尽管是商业产品。http://www.elliecomputing.com/products/merge_overview.asp

在此处输入图片说明

我也同意MrTelly所说的Ultracompare很好。一个不错的功能是它将比较RTF和Word文档,这在您最终与销售人员进行文字编程并且他们没有正确管理其文档时非常方便。


第一个链接不起作用,它返回500错误。如果资源已移动,请调整网址。
Sergey P.又名天青,

@ SergeyP.akaazure-对此表示抱歉。我的博客无效-我已经删除了链接
。–史蒂夫·米德利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.