Was ist das beste Drei-Wege-Merge-Tool? [geschlossen]

272

Subversion, Git, Mercurial und andere unterstützen Drei-Wege-Zusammenführungen (Kombination meiner, ihrer und der "Basis" -Revision) und unterstützen grafische Tools zur Lösung von Konflikten.

Welches Tool verwenden Sie? Windows, Mac OS X, Linux, kostenlos oder kommerziell, wie Sie es nennen.

Hier sind einige, die ich verwendet oder gehört habe, um das Gespräch zu beginnen:

(Ich erkenne, dass dies dem Best Diff-Tool ähnelt , aber es unterscheidet sich darin, dass ich mich explizit auf Drei-Wege-Merge-Tools konzentriere. WinMerge ist beispielsweise nicht auf der Liste.)

Dan Fabulich
quelle
4
Tatsächlich hat WinMerge einen 3-Wege-Vergleich mit VCS-Tools. Sie müssen nur 3 Dateien (links, rechts, Ergebnis) als Argumente an die Befehlszeile übergeben und es erledigt den Job.
Zilvinas
3
Es ist schwierig zu sagen, welches das beste Zusammenführungswerkzeug ist, da es von subjektiven Faktoren abhängt. Aber wenn Sie eine Funktion suchen, die den Unterschied kennzeichnet, versuchen Sie semanticmerge.com
Daniel Peñalba
28
Wie kann diese Frage als nicht konstruktiv abgeschlossen werden? Es verfügt über 182 upvotes, 123 Sterne und 11 Antworten, offensichtlich viele Leute denken , es ist konstruktiv.
HelloGoodbye
3
@Shuklaswag Wie hängt das mit meiner Frage zusammen? Ich fragte mich, warum es als "nicht konstruktiv" geschlossen wurde.
HelloGoodbye

Antworten:

167

KDiff3 Open Source, plattformübergreifend

Gleiche Schnittstelle für Linux und Windows, sehr intelligenter Algorithmus zum Lösen von Konflikten, reguläre Ausdrücke zum automatischen Lösen von Konflikten, Integration in ClearCase, SVN, Git, MS Visual Studio, bearbeitbare zusammengeführte Datei, Vergleichen von Verzeichnissen

Die Tastaturnavigation ist großartig: Strg-Pfeile zum Navigieren durch die Diffs, Strg-1, 2, 3 zum Zusammenführen.

Siehe auch https://stackoverflow.com/a/2434482/42473

Geben Sie hier die Bildbeschreibung ein

Sotto
quelle
10
Weitere Vorteile von KDiff3: gleiche Schnittstelle für Linux und Windows, sehr intelligenter Algorithmus zur Lösung von Konflikten, reguläre Ausdrücke zur automatischen Lösung von Konflikten, Integration in ClearCase, SVN und Git, bearbeitbare zusammengeführte Datei, Vergleich von Verzeichnissen.
Neves
3
@ThomasS Das ist nicht wahr, siehe die andere kdiff3Antwort für ein Beispiel. kdiff3wird gerne ganze Verzeichnisbäume unterscheiden und zusammenführen und das schon seit vielen Jahren! Einige Tools (z. B. git) starten es möglicherweise nur pro Datei, andere Tools (z. B. mercurial) ermöglichen es Ihnen jedoch, ganze Repositorys in drei Richtungen zu unterscheiden / zusammenzuführen.
Mark Booth
2
KDiff3 ist schrecklich, wenn sich die lokalen und anderen Änderungen in der Anzahl der hinzugefügten Zeilen unterscheiden. Wenn Sie lokal die Zeilen A, B und C hinzufügen, die andere Änderung jedoch nur A und C hinzufügt, stellt KDiff3 fest, dass A hinzugefügt wurde, findet dann B Konflikte mit C und fügt dann trotzdem C hinzu.
Neil
3
Hat jemand eine Meinung zu dieser Antwort im Jahr 2016?
Shadoninja
4
Es wird seit 2014 nicht mehr unterstützt
Ruslan K.
106

Ich habe gerade P4merge ausgecheckt, da ich in einem anderen Blog-Artikel davon gehört habe:

Geben Sie hier die Bildbeschreibung ein

Sehr schickes Interface und KOSTENLOS! Ich war ein treuer Araxis Merge-Benutzer, aber da dies kostenlos und fantastisch ist, würde ich Sie ermutigen, es sich anzusehen.

Dan Esparza
quelle
11
Es ist verfügbar für Windows, Mac, Linux, FreeBSD und Solaris 10
Grant Limberg
36
@Art: Natürlich können Sie das Zusammenführungsergebnis in P4Merge bearbeiten. Das mache ich die ganze Zeit!
Sklivvz
9
p4merge ist auch nicht "kostenlos" für Unternehmen. Die Lizenz ist für die kommerzielle Nutzung beschränkt.
DH4
21
@ DH4 Ich habe gerade eine E-Mail vom offiziellen Perforce-Support erhalten und P4Merge ist kostenlos für den kommerziellen Gebrauch (ich arbeite für MS, es wird nicht mehr Unternehmen als das;))
Ohad Schneider
4
Keine Unterstützung für Ordnervergleiche in P4merge. Es wäre eine wirklich großartige Ergänzung zu P4Merge gewesen.
RuntimeException
95

Beyond Compare 3 Pro unterstützt das Drei-Wege-Zusammenführen und ist ein ziemlich beeindruckendes Zusammenführungswerkzeug. Es ist kommerziell (aber es lohnt sich, IMHO) und ist unter Windows, Linux und Mac OS X verfügbar.

Wie in einem Kommentar erwähnt, ist es auch kostengünstig.

Geben Sie hier die Bildbeschreibung ein

Hinweis: Wenn kein Zusammenführungssatz vorhanden ist, dh Zusammenführungsmarkierungen in der Zieldatei gespeichert sind, bietet Beyond Compare keinen Drei-Wege-Dateivergleich / -bearbeitung an. Beyond Compare sagt, dass diese Funktion auf ihrer Liste steht .

Hinweis: Die 3-Wege-Zusammenführung ist nur in der Pro-Edition von Beyond Compare 3 verfügbar

Joshua McKinnon
quelle
16
+1 Beyond Compare ist den Preis leicht wert, besonders wenn man andere Funktionen berücksichtigt.
Jamieie
2
Gut, aber keine Unterstützung für die Auswahl von Ordnern
Michael Fitzpatrick
9
Michael, ich bin mir nicht sicher, was du meinst. Darüber hinaus hat den Vergleich große Unterstützung für die Differenzen zwischen Ordnern: scootersoftware.com/moreinfo.php .
Bruce Christensen
4
Es ist deutlich auf ihrer Website angegeben - aktualisierte Antwort auf State Pro-Version ist eine Voraussetzung für 3-Wege-Zusammenführung
Joshua McKinnon
2
Beyond Compare 4 Pro hat die Unterstützung für das Zusammenführen von Ordnern hinzugefügt.
Chris Kennedy
75

Meld Diff Viewer

Ich habe nur gute Erfahrungen mit Meld gemacht. Ich benutze es, wenn ich unordentliche Code-Zusammenführungen zwischen Zweigen durchführen muss. Es ist einfach zu bedienen und hat eine saubere Oberfläche.

  • Open Source
  • Linux, Windows und MacOS werden unterstützt
  • Multiple File Diff
  • Drei-Wege-Vergleichsunterstützung

In Ubuntu ist die Installation so einfach wie: sudo apt-get install meld

Geben Sie hier die Bildbeschreibung ein

Elijah
quelle
3
+1 Meld ist eine raffinierte, saubere "gerade genug" Software.
Trevor Bramble
15
Meld ist fehlerhaft und seine visuellen Hinweise sind irreführend.
Aib
6
Meld funktioniert nicht einmal richtig mit git.
Slikts
65
Meld ist leider KEIN Drei-Wege-Merge-Tool (auch wenn es auf der Homepage angegeben ist). Für das Drei-Wege-Zusammenführen benötigen Sie VIER Fenster (die Basisdatei). Aber ich liebe verschmelzen, funktioniert super.
lzap
8
@lzap, eigentlich war meld dreifach, aber es war nicht dokumentiert und vor ungefähr einem Monat habe ich festgestellt, dass sie die dreifache Zusammenführung vollständig entfernt haben: is.gd/prKX5d Wenn Sie bei einer Version bleiben, die alt genug ist, befinden Sie sich noch in Glück aber.
Magnus
45

vimdiff. Es ist toll. Alles, was Sie brauchen, ist ein drei Fuß breites Fenster.

Geben Sie hier die Bildbeschreibung ein

Paul Beckingham
quelle
11
Es hat einige Zeit gedauert, um herauszufinden, dass Sie "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" ausführen und den Zusammenführungspuffer mit Strg + w J an den unteren Bildschirmrand verschieben können. Verwenden Sie es so?
Wim Coenen
Ziemlich genau, außer ich benutze vim, nicht gvim.
Paul Beckingham
7
Downvote, es löst Konflikte nicht wirklich, es ist nur diff.
Piotr
3
vimdiff hat jetzt ein gutes Git-Handling für das 3-Wege-Zusammenführen (dh 4 Fenster
Sonia Hamilton
8
@piotr vimdiff löst tatsächlich Konflikte. Mit dem Befehl "diffg <Buffernummer>" erstellen Sie die zusammengeführte Datei im unteren Bereich. Das Buttom-Zusammenführungsfenster ist Puffer 1, die anderen befinden sich oben mit 2,3,4. Um zu Unterschieden zu springen, verwenden Sie [c und] c. Dies ist eine sofort einsatzbereite Funktionalität für Debian Wheezy 7.7.
Ikky
37

Source Gear Diff Merge :

Plattformübergreifende, echte Drei-Wege-Zusammenführungen und für den kommerziellen oder persönlichen Gebrauch völlig kostenlos.

Geben Sie hier die Bildbeschreibung ein

CMS
quelle
1
Ich habe DiffMerge jahrelang benutzt und es hat mir gefallen. Ich habe jedoch diesen Blog-Beitrag gelesen, in dem der Autor sich Diff-Merge-Tools angesehen und die Liste auf DiffMerge und P4Merge reduziert hat. Am Ende entschied er sich für P4Merge, einfach weil es eine schönere Oberfläche hatte. Ich habe heute gerade angefangen, P4Merge zu verwenden, und ich müsste zustimmen. Insbesondere zeigt DiffMerge Änderungen nicht gut an - es zeigt sie als Löschen und Einfügen. Dies kann verwirrend sein, wenn viele Änderungen nahe beieinander liegen. P4Merge zeigt es besser an.
Simon Tewsi
1
Ich sehe, dass diffmerge nicht kostenlos ist , es kostet $ 19
erkfel
3
@erkfel, das ist falsch. Die Registrierung ist optional und die Software kann kostenlos verwendet werden: "SourceGear DiffMerge ist ein preisgekröntes Tool zum Verteilen und Zusammenführen von Dateien, das seit 2007 professionellen Entwicklern und Hobbyisten hilft. SourceGear DiffMerge ist für die kostenlose Verwendung lizenziert. Durch Registrierung von DiffMerge Sie helfen bei der Finanzierung der Entwicklung, Wartung und des Supports neuer Produkte. Um unseren registrierten Benutzern zu danken und zusätzliche Registrierungen zu fördern, haben wir in 4.2 ... "(im Programmtext) einige neue Funktionen hinzugefügt
Muhd
1
Eine Sache, die ich in DiffMerge im Vergleich zu P4Merge (das ich jetzt zum Differenzieren und Zusammenführen in git verwende) nützlich finde, ist die Integration in Windows File Explorer. Insbesondere kann ich mich an eine Datei in einem Ordner erinnern und dann die gespeicherte Datei mit einer anderen in einem anderen Ordner vergleichen. Ich finde das vielleicht ein- oder zweimal im Monat nützlich, wenn ich nicht zwei Dateien in denselben Ordner verschieben muss, um sie zu vergleichen (z. B. SQL-Skripte, die nicht der Quellcodeverwaltung unterliegen).
Simon Tewsi
1
@SimonTewsi: Für P4Merge für Mac müssen sich die Dateien nicht im selben Ordner befinden. Sie können das Dateisystem durchsuchen und von überall auf dem Computer Basis-, erste und zweite Dateien auswählen.
Steve Samuels
32

Araxis Merge . Es ist kommerziell, aber es lohnt sich ... Es ist für Windows und Mac OS X verfügbar.

Geben Sie hier die Bildbeschreibung ein

Dave
quelle
5
Stimmen Sie zu, es ist das Beste, was ich verwendet habe.
Dan Olson
1
Meine Beobachtung: Es ist relativ langsam, wenn große Dateien mit etwa 5 MB verarbeitet werden.
Naga Kiran
3
+1 für Araxis. Eines der wenigen Werkzeuge, die ich bereit war, gutes Geld für den persönlichen Gebrauch zu bezahlen. Alles andere ist unübersichtlich, verwirrend und im Vergleich blass (Wortspiel beabsichtigt).
Dan Esparza
8
Nachdem ich Araxis längere Zeit verwendet habe, hat mein Unternehmen aus folgenden Gründen auf KDiff3 umgestellt: (1) Wenn eine Zusammenführung in Araxis abgebrochen wird, wird die Datei in TortoiseHg weiterhin als aufgelöst markiert. (2) Araxis zeigt eine Mischung aus der Basisrevision und dem Zusammenführungsergebnis im Bereich "Zusammenführungsergebnis", die häufig verwirrend ist. (3) Von TortoiseHg wird KDiff3 automatisch ohne Benutzerinteraktion zusammengeführt, wenn dies möglich ist. (4) Der Zusammenführungsalgorithmus von KDiff3 scheint einfach einen besseren Job zu machen. Wir verwenden jedoch immer noch Araxis als Vergleichstool :)
Michael Platings
2
Wie in den Kommentaren für andere Antworten erwähnt, verfügt ein geeignetes 3-Wege-Zusammenführungswerkzeug über 4 Bedienfelder - Basis, lokal, entfernt und Ergebnis . Araxis verbindet Basis und Ergebnis, was zu Problemen führen kann.
Neonblitzer
27

Der Kdiff3-Algorithmus zur Konfliktlösung ist wirklich beeindruckend.

Selbst wenn Subversion auf einen Konflikt hinweist, löst Kdiff3 diesen automatisch. Es gibt Versionen für Windows und Linux mit derselben Oberfläche. Es ist möglich, es in Tortoise und in Ihre Linux-Shell zu integrieren.

Es ist in der Liste meiner bevorzugten Open-Source-Software. Eines der ersten Werkzeuge, die ich auf einer Maschine installiere.

Sie können es als Standard-Diff-Tool in Subversion, Git, Mercurial und ClearCase konfigurieren. Es löst auch fast alle ClearCase-Konflikte. In Windows hat es eine nette Integration mit Windows Explorer: Wählen Sie zwei Dateien aus und klicken Sie mit der rechten Maustaste, um sie zu vergleichen, oder klicken Sie mit der rechten Maustaste, um eine Datei später zu speichern, und wählen Sie dann eine andere aus, um sie zu vergleichen.

Die zusammengeführte Datei kann bearbeitet werden. Hat glatte Tastaturkürzel.

Sie können damit auch Verzeichnisse vergleichen und zusammenführen. Sehen: Kdiff3 Verzeichnisse vergleichen

Eine erweiterte Funktion besteht darin, reguläre Ausdrücke zum Definieren automatischer Zusammenführungen zu verwenden.

Mein einziger Ärger ist, dass es etwas schwierig zu kompilieren ist, wenn es nicht in Ihrem bevorzugten Distribution-Repository vorhanden ist.

neves
quelle
3
Ich stimme dem Zusammenführungsalgorithmus zu. Es ist unglaublich raffiniert und scheint seltsamerweise zu "wissen", was Sie auf eine Weise tun möchten, die andere Tools nicht können. Es zerquetscht regelmäßig diff3 und Subversion (blarg) und kann sogar bei einer Git-Zusammenführung hilfreich sein.
Kevinarpe
Wo sind die Tastaturkürzel, um als nächstes zu gehen und a / b / c zu wählen?
Mylord
@mylord: Verwenden Sie eine kleine Auto-Advance-Verzögerung und die Tastenkombinationen Strg-1 / 2/3, um A / B / C für viele Konflikte auszuwählen.
neves
Hat etwas KDiff3 für Sie ersetzt? Großer Benutzer davon, aber ich sehe, ob es
heutzutage
1
@ chrispepper1989, ich benutze heute noch KDiff3 in Git. Ich habe noch nie eine 3-Wege-Merge-App gefunden, die deutlich besser ist als KDiff3. P4Merge hat eine modernere Oberfläche, aber als ich es getestet habe, konnte man die zusammengeführte Datei nicht bearbeiten (ich denke, Sie können es jetzt tun).
Neves
13

Ich liebe Ediff . Es ist in GNU Emacs integriert .

Verwenden Sie ediff-files3zum Ausführen eines Drei-Wege-Diff (zum Auswählen von drei Dateien) oder ediff-buffer3(zum Auswählen von drei bereits geöffneten Puffern). Sie erhalten einen Bildschirm, der folgendermaßen aussieht:

Drei-Wege-Diff in Emacs

Beachten Sie die Hervorhebung der Wortunterschiede.

Sie können schlagen noder pzu den nächsten / vorherigen diffs zu gehen, während abdie Region aus dem Puffer ein (ganz links) kopieren b zu puffern (der mittlere), und in ähnlicher Weise für andere aus zwei Buchstaben bestehenden Kombinationen a, b, c; rbstellt die Region im Puffer wieder her b. Klicken Sie hier, ?um ein schnelles Hilfemenü aufzurufen , oder lesen Sie das ausführliche Handbuch zum Zusammenführen von Diff3 in Emacs .

jcrossley3
quelle
6
So sehr ich Ediff auch liebe, ich sehe oben nur zwei Puffer ... Eine 3-Wege-Zusammenführung soll 3 oder 4 Fenster haben: Die drei werden zusammengeführt (lokal, remote und ihre gemeinsame Ahnenbasis) und die endgültige Zusammenführungsausgabe . Es ist offenbar ein 3-Wege - Merge in ediff sein (genannt ediff-merge-with-ancestor) , aber ich bin mir nicht sicher , ob es drei Scheiben hat oder 4, und auch der Screenshot oben nicht widerspiegelt.
ShreevatsaR
Bearbeitet, um einen Drei-Wege-Diff @ShreevatsaR
Unhammer
@unhammer Danke, das ist besser, aber es werden immer noch nur 3 Fenster angezeigt, sodass nicht klar ist, dass es sich um ein echtes 3-Wege-Diff handelt (das 4 Fenster haben würde; siehe kdiff3 und andere Beispiele). Wenn im Screenshot die drei Dinge zusammengeführt werden, wo wird sie ausgegeben?
ShreevatsaR
Sie ändern destruktiv einen (oder mehrere!) Der Puffer. Deshalb habe ich erwähnt, dass abdie Region von Puffer a nach Puffer b kopiert wird. Ich glaube, es gibt noch keine Version mit vier Fenstern ediff. (Ich weiß , emergeverwendet ein dedizierter Ausgang statt Puffer, aber emerge-files-with-ancestornicht zeigen , die Vorfahren, nur verwendet es die richtige Version zu erraten , durch das Sehen , die man mit den Vorfahren übereinstimmt.)
unhammer
11

Ultracompare . Es ist wirklich gut, verarbeitet große Dateien (mehr als 1 GB) gut, ist für Windows / Mac / Linux verfügbar und kommerziell, aber es lohnt sich.

Screenshot von UltraCompare Professional unter Windows

MrTelly
quelle
Ich weiß nicht, wie ich es so einstellen soll, dass es das 3-Wege-Zusammenführen unterstützt ... Kann es eine Basisdatei in der Mitte anzeigen, 2 geänderte Dateien links und rechts, so dass ich sehen kann, was in beiden Dateien basierend auf der Basis geändert wird Datei und haben das zusammengeführte Ergebnis von 2 geänderten Dateien unten? Ich benutze UltraCompare 17.0
Ricky
1
Ein bisschen googeln fand diese ultraedit.com/support/tutorials-power-tips/ultracompare/… - spricht über 3-Wege-Zusammenführung in der erweiterten Zusammenführung von Schritt 6.
MrTelly
11

Diffuse ist ein einfach zu verwendendes Drei-Wege-Zusammenführungswerkzeug. Es unterstützt alle von Ihnen genannten Plattformen und Versionskontrollsysteme und kann mehr als drei Dateien gleichzeitig vergleichen.

Geben Sie hier die Bildbeschreibung ein

Jordan Ryan Moore
quelle
2
Und es unterstützt sogar den gleichzeitigen Vergleich von N Dateien! Dies ist praktisch, wenn Sie Konfigurationsdateien aus vielen homogenen Anwendungen vergleichen müssen.
Pius Raeder
Ich benutze Diffuse für meine mehr als drei Dateivergleiche
Mohas
6

xxdiff wenn du im Linux Land bist.

Geben Sie hier die Bildbeschreibung ein

Mark Harrison
quelle
4

Die Zusammenfassung ist, dass ich ECMerge als ein großartiges, wenn auch kommerzielles Produkt empfand. http://www.elliecomputing.com/products/merge_overview.asp

Geben Sie hier die Bildbeschreibung ein

Ich stimme auch MrTelly zu, dass Ultracompare sehr gut ist. Eine nette Funktion ist, dass RTF- und Word-Dokumente verglichen werden. Dies ist praktisch, wenn Sie mit den Verkäufern in Word programmieren und diese ihre Dokumente nicht richtig verwalten.

Steve Midgley
quelle
Der erste Link funktioniert nicht, er gibt 500 Fehler zurück. Wenn die Ressource verschoben wurde, passen Sie bitte die URL an.
Sergey P. aka Azure
@ SergeyP.akaazure - Entschuldigung. Mein Blog ist nicht mehr vorhanden - Ich habe den Link entfernt.
Steve Midgley