Was ist das beste Tool zum visuellen Zusammenführen für Git? [geschlossen]

599

Was ist das beste Tool zum Anzeigen und Bearbeiten einer Zusammenführung in Git? Ich möchte eine 3-Wege-Zusammenführungsansicht mit "meiner", "ihrer" und "Vorfahr" in separaten Feldern und einem vierten "Ausgabe" -Feld erhalten.

Anweisungen zum Aufrufen des Tools wären ebenfalls hilfreich. (Ich habe immer noch nicht herausgefunden, wie ich kdiff3 so starten soll, dass ich keinen Fehler bekomme.)

Mein Betriebssystem ist Ubuntu.

Andy
quelle
15
"Aber jetzt ist es nicht erlaubt" Ja, deshalb hasse ich Stackoverflow heutzutage. Ohne diese Fragen ist es viel zu trocken und langweilig.
István Ujj-Mészáros
17
Gibt es eine Stackexchange-Site, auf der diese Art von Frage zulässig ist? Wenn nicht, sollte es geben ..
fzzylogic
16
Es scheint Zeit für einen neuen Stapelüberlauf zu sein, bei dem solche Fragen zulässig sind. Es ist klar, dass solche Fragen für so viele Menschen wertvoll sind, dass es einfach dumm ist, sie zu schließen. Ich denke, Sie sind mit Bürokratie über die Bühne gegangen. Wie wäre es, wenn Sie eine Umfrage zu diesem Thema durchführen und sehen, was Ihre "Kunden" wollen
?
9
Es gibt softwarerecs.stackexchange.com
Philipp Wendler
6
Das Problem: Software ist nutzlos, weil die Experten hier sind, nicht da.
Reinierpost

Antworten:

337

Meld ist ein kostenloses Open-Source- und plattformübergreifendes Diff / Merge-Tool (UNIX / Linux, OSX, Windows).

So installieren Sie es:

user20805
quelle
53
Wer kümmert sich um das Betriebssystem, das der ursprüngliche Autor verwendet? Die Frage ist allgemein genug, um für alle von Interesse zu sein, die danach suchen. Und 3-Wege-Diff ist, wenn Sie tatsächlich 4 Scheiben mit Test sehen; Merge-Base / lokal / remote / Ergebnis
Evgeny
16
meldist mit komplexen Unterschieden mühsam, Optionen wie auswählen zu können chose b for all unresolved conflictsist viel besser, als manuell auf den richtigen Pfeil für jedes Stück klicken zu müssen meld. Außerdem ist es von unschätzbarem Wert, in einer bestimmten Ausgabedatei zusammengeführt zu werden, anstatt die vorhandenen Eingabedateien zu bearbeiten, um fehlgeschlagene Fehler zu vermeiden.
Mark Booth
3
@naxa Meld hat jetzt ein Windows-Installationsprogramm: code.google.com/p/meld-installer
Roman
6
Mit kdiff3 können Sie 4 Ansichten sehen, meld erlaubt nur 3 Ansichten. Meld ist kein echtes Merge-Tool, sondern ein Diff-Tool, da die Basisversionsansicht nicht angezeigt wird.
Akira Yamamoto
4
Meld ist schrecklich, besonders für Zusammenschlüsse. Es gibt keine Option zum "automatischen Übertragen nicht widersprüchlicher Änderungen", wodurch jede Zusammenführung fürchterlich schmerzhaft wird.
Cerin
91

Sie können Ihr eigenes Zusammenführungstool für die Verwendung mit " git mergetool" konfigurieren .

Beispiel:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

Und wenn Sie schon dabei sind, können Sie es auch als Difftool für " git difftool" einrichten :

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

Beachten Sie, dass Sie unter Unix / Linux nicht möchten, dass das $BASEvon Ihrer Shell als Variable analysiert wird - es sollte tatsächlich in Ihrer ~ / .gitconfig-Datei erscheinen, damit dies funktioniert.

Evgeny
quelle
10
Da p4merge (jetzt) ​​eines der offiziell unterstützten Git-Mergetools ist, sollte es nicht notwendig sein, mit dem Tool zu spielen. .cmd Variable mehr.
Matt Ball
2
Stellen
kayleeFrye_onDeck
64

Beyond Compare 3 , mein Favorit, verfügt über eine Zusammenführungsfunktion in der Pro Edition . Das Gute an der Zusammenführung ist, dass Sie alle 4 Ansichten sehen können: Basis, links, rechts und zusammengeführtes Ergebnis. Es ist etwas weniger visuell als P4V, aber viel mehr als WinDiff. Es lässt sich in viele Quellcodeverwaltungen integrieren und funktioniert unter Windows / Linux. Es hat viele Funktionen wie erweiterte Regeln, Editionen, manuelle Ausrichtung ...

Der Perforce Visual Client ( P4V ) ist ein kostenloses Tool, das eine der explizitesten Schnittstellen zum Zusammenführen bietet (siehe einige Screenshots ). Funktioniert auf allen wichtigen Plattformen. Meine größte Enttäuschung mit diesem Tool ist die Art der schreibgeschützten Benutzeroberfläche . Sie können die Dateien nicht manuell bearbeiten und nicht manuell ausrichten.

PS: P4Merge ist in P4V enthalten. Perforce versucht, es ein bisschen schwierig zu machen, ihr Tool ohne ihren Client zu bekommen.

SourceGear Diff / Merge ist möglicherweise meine zweite kostenlose Tool-Wahl. Überprüfendass Merge - Bildschirme-shot und Sie werden sehenes ist hat die 3 Ansichten zumindest.


Meld ist ein neueres kostenloses Tool, das ich SourceGear Diff / Merge vorziehen würde: Jetzt funktioniert es auch auf den meisten Plattformen (Windows / Linux / Mac) mit dem entscheidenden Vorteil, dass einige Quellcodeverwaltungen wie Git nativ unterstützt werden. So können Sie einige Verlaufsunterschiede bei allen Dateien viel einfacher haben. Die Zusammenführungsansicht (siehe Screenshot ) hat nur 3 Fenster , genau wie SourceGear Diff / Merge . Dies macht das Zusammenführen in komplexen Fällen etwas schwieriger.

PS: Wenn ein Tool eines Tages das Zusammenführen von 5 Ansichten unterstützt , wäre dies wirklich fantastisch, denn wenn Sie Commits in Git auswählen, haben Sie wirklich nicht eine Basis, sondern zwei. Zwei Basen, zwei Änderungen und eine resultierende Zusammenführung.

Wernight
quelle
7
Perforce Merge ist großartig. Es hat ein 4-Fenster-Merge-Tool, das wirklich hilft: Ihre, ihre, Common Base, New
Gal
4
P4 wird auch von Google verwendet .
Wernight
5
Sie können nur P4Merge ohne den Rest der Leistung benutzerdefiniert installieren.
Dirk Bester
6
Die neueste Version von p4merge verfügt nicht über die schreibgeschützte Schnittstelle. Sie können die zusammengeführte Datei im unteren Bereich bearbeiten.
Ian Ni-Lewis
1
Dies ist eine wirklich gute Antwort und Diskussion. Ich danke Ihnen für das Teilen!
Mark Good
44

Ich höre gute Dinge über kdiff3.

kryger
quelle
4
+1: kdiff3 ist meld weit überlegen und wird auch von git nativ unterstützt.
Mark Booth
3
kdiff3hat viel mehr Funktionen, aber meldeine bessere Benutzeroberfläche. Meiner Meinung nach meldist es besser für einfache Zusammenführungen, bei denen die von bereitgestellten Funktionen meldausreichen. Denken Sie auch daran diffuse, es zu versuchen .
Mikko Rantalainen
Mit kdiff3 können Sie 4 Ansichten sehen, meld erlaubt nur 3 Ansichten. Meld ist kein echtes Merge-Tool, sondern ein Diff-Tool, da die Basisversionsansicht nicht angezeigt wird.
Akira Yamamoto
43

Mein bevorzugtes visuelles Zusammenführungswerkzeug ist SourceGear DiffMerge

  • Es ist frei.
  • Plattformübergreifend (Windows, OS X und Linux).
  • Saubere visuelle Benutzeroberfläche
  • Alle erwarteten Diff-Funktionen (Diff, Merge, Folder Diff).
  • Befehlszeilenschnittstelle.
  • Verwendbare Tastaturkürzel.

Benutzeroberfläche

Luke
quelle
3
Wie konfigurierst du es für die Arbeit mit Git?
Ryan Lundy
2
@Kyralessa Siehe stackoverflow.com/questions/255202/…
Luke
2
Danke, dass du es mir vorgestellt hast !! : D Dieses Tool ist sauber und benötigt weniger Zeit für die Installation und Arbeit als das Verschmelzen. Ich verbringe eine halbe Stunde damit, meld zu installieren. Aber das habe ich in 5 min gemacht !!
Om39a
2
Hinweis: Diffmerge scheint keine 3-Wege-Zusammenführungsfunktion zu haben. Ich gebe es auf, nachdem ich es aus diesem Grund ein paar Wochen lang
ausprobiert habe
Es ist ein schönes Tool und kann auch Ordner vergleichen. Das Problem ist etwas langsam (MacBookPro 15 2014, MacOS Catalina)
emKaroly
33

vimdiff

Sobald Sie vim gelernt haben (und IMHO sollten Sie), ist vimdiff nur ein weiteres schönes kleines orthogonales Konzept zum Lernen. So erhalten Sie Online-Hilfe in vim:

:help vimdiff 

Diese Frage behandelt die Verwendung: Wie verwende ich vimdiff, um einen Konflikt zu lösen?

Geben Sie hier die Bildbeschreibung ein

Wenn Sie im dunklen Zeitalter der Mausnutzung stecken bleiben und die Dateien, die Sie zusammenführen, nicht sehr groß sind, empfehle ich das Verschmelzen.

Andrew Wagner
quelle
<3 vimdiff, ich kann nicht herausfinden, wie ich svn davon überzeugen kann, dass ich es als 'Merge'-Tool verwenden kann.
Klokop
gvimdiff funktioniert auch gut für diesen Zweck.
New123456
2
Die Verwendung des Fugitive Plugins macht es noch einfacher! vimcasts.org/episodes/…
Erik Westrup
Wenn es nur eine Möglichkeit gäbe, den Unterschied zwischen lokal / Basis und Basis / Fernbedienung klar zu erkennen.
Ciro Santilli 法轮功 冠状 病 六四 事件 13
24

Sie können P4Merge ausprobieren .

Visualisieren Sie die Unterschiede zwischen Dateiversionen mit P4Merge. Lösen Sie Konflikte, die sich aus der parallelen oder gleichzeitigen Entwicklung ergeben, mithilfe der Farbcodierung.

Die Funktionen umfassen:

  • Markieren und bearbeiten Sie Unterschiede in Textdateien
  • Wählen Sie, ob Sie Zeilenenden oder Leerzeichen einschließen oder ignorieren möchten
  • Erkennen von Konventionen zum Beenden von Zeilen für Windows (CRLF), Mac (CR) und Unix (LF)
  • Verwenden Sie Befehlszeilenparameter und starten Sie sie von Nicht-Perforce-Anwendungen
  • Zeigen Sie Zeilennummern beim Vergleichen und Zusammenführen von Dateien an
  • Schließen Sie geänderte, eindeutige oder unveränderte Dateien aus
  • Filtern Sie Dateien nach Name oder Erweiterung
  • Organisieren Sie geänderte Assets in der bekannten Datei- / Ordnerhierarchie
  • Vergleichen Sie JPEG, GIF, TIFF, BMP und andere Dateiformate
  • Erweitern Sie mit der Qt-API
  • Überlagern Sie Bilder oder zeigen Sie sie nebeneinander an
  • Markieren Sie Unterschiede bei überlagerten Bildern
Ron
quelle
Das beste, das ich bisher gesehen habe. Lösen Sie Konflikte einfach, indem Sie die Änderung aus der Liste der Drei-Wege-Ansicht
auswählen
Behebt den
Al-Mothafar
Begann es heute zu benutzen und es ist ziemlich intuitiv.
Ressource
22

IntelliJ IDEA verfügt über ein ausgeklügeltes Tool zur Lösung von Zusammenführungskonflikten mit dem Zauberstab "Auflösen", das das Zusammenführen erheblich vereinfacht:

Quelle: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

Niutech
quelle
2
Das Merge-Tool von Idea ist einfach genial. Es ist sogar in der Community-Edition von Idea verfügbar, was bedeutet, dass Sie es kostenlos als erweitertes Merge-Tool verwenden können - das ist, was ich tue (in den meisten Fällen verwende ich VSCode, wo ich arbeite, und ich verwende Idea für schwierige Merge-Fälle). VSCode macht auch ziemlich gute Arbeit und manchmal sogar besser als Idea. Aber für schwierige Fälle ist ihr 3-Panel-Layout das beste Werkzeug, das ich je gesehen habe
godblessstrawberry
Ich hasse es, wenn die Bildlaufleiste 'file summery' NICHT zusammen ist! Der Hauptgrund, warum ich diffus mag!
Anthony
16

Diffus ist mein Favorit, aber natürlich bin ich voreingenommen. :-) Es ist sehr einfach zu bedienen:

$ diffuse "mine" "output" "theirs"

Diffuse ist ein kleines und einfaches Tool zum Zusammenführen von Text, das in Python geschrieben wurde. Mit Diffuse können Sie Änderungen an Ihrem Code einfach zusammenführen, bearbeiten und überprüfen. Diffuse ist freie Software.

Kenorb
quelle
2
Ich mag diffus und ich bin nicht voreingenommen.
Jturcotte
2
@Derrick Moser: diffusesieht sehr gut aus. Ich habe es gerade versucht und es war besser anders als kdiff3. Aber ich versuche es mit zu verwenden git mergetoolund es öffnet 4 Dateien nebeneinander (lokal, Zusammenführungsergebnis, Remote, Basis), und mein Bildschirm ist dafür nicht breit genug. Ich musste viel horizontal scrollen. kdiff3 zeigt nur 3 nebeneinander und das Ergebnis in der unteren Hälfte des Fensters.
Yairchu
diffuse bietet im Vergleich zu meld einige zusätzliche Zusammenführungsoptionen (ermöglicht das Verbinden beider Versionen, anstatt eine davon auszuwählen).
Audrius Meskauskas
Unter Windows funktioniert diffuse sofort, um zwei Ordner mit CVS-Repo und Git-Repo zu vergleichen und Git-Merge-Konflikte zusammenzuführen. Die diffusen Diff-Dateien werden in Registerkarten in einem einzigen Fenster geöffnet. Ich wechselte zu diffus (nachdem ich emacs 'ediff verwendet hatte (zu viele Funktionen, nützlich in den 90ern)> vimdiff (komplizierte Plugins-Tastenanschläge)> p4merge> araxis (proprietry)> meld (zu langsam), tkdiff (nur cvs)> kdiff3 (gut) , gute Regex-Ignorierfunktionen)> Winmerge (gut)> diffus (schnell, portabel, funktioniert wie erwartet)), als ich das erste Mal diffus versuchte.
Mosh
Wie ändere ich die GUI-Sprache in Diffuse?
Zach
14

Araxis Merge http://www.araxis.com/merge Ich verwende es unter Mac OS X, aber ich habe es unter Windows verwendet ... es ist nicht kostenlos ... aber es hat einige nette Funktionen ... schöner Fenster aber.

Clintm
quelle
9

Sie können das von git mergetool verwendete Tool durch Übergeben von git mergetool -t=<tool>oder ändern --tool=<tool>. Verwenden Sie zum Ändern der Standardeinstellung (von vimdiff) git config merge.tool <tool>.

user35149
quelle
6

Für die Git-Zusammenführung können Sie also Folgendes versuchen:

  • DiffMerge zum visuellen Vergleichen und Zusammenführen von Dateien unter Windows, OS X und Linux.

    DiffMerge

  • Meld ist ein visuelles Diff- und Merge-Tool.

    Meld ist ein visuelles Diff- und Merge-Tool

  • KDiff3 , ein Diff- und Merge-Programm), das 2 oder 3 Texteingabedateien / -verzeichnisse vergleicht oder zusammenführt.
  • opendiff(Teil von Xcode Tools unter macOS), ein Befehlszeilenprogramm, das die FileMerge-Anwendung vom Terminal aus startet, um Dateien oder Verzeichnisse einschließlich des Zusammenführens grafisch zu vergleichen .
Kenorb
quelle
2
git config --global merge.tool opendiffhat am besten für mich funktioniert
James Matthew Mudgett
5

Ich habe viele der hier genannten Tools ausprobiert und keines davon war genau das, wonach ich suche.

Persönlich habe ich Atom gefunden ein großartiges Werkzeug zur Visualisierung von Unterschieden und zur Lösung / Zusammenführung von Konflikten ist.

Beim Zusammenführen gibt es nicht drei Ansichten, aber alles wird zu einer mit farbiger Hervorhebung für jede Version kombiniert. Sie können den Code direkt bearbeiten oder es gibt Schaltflächen, mit denen Sie die gewünschte Version des Snippets verwenden können.

Ich benutze es nicht einmal mehr als Editor oder IDE, nur um mit Git zu arbeiten. Saubere Benutzeroberfläche und sehr einfach, und es ist sehr anpassbar.

  • Sie können es über die Befehlszeile starten und eine einzelne Datei übergeben, in die Sie öffnen möchten, oder Ihren Projektordner hinzufügen (git repo).

    • Ich würde auch den Projektmanager als eine sehr bequeme Möglichkeit empfehlen , zwischen Projekten zu navigieren, ohne Ihre Baumansicht auszufüllen.
  • Das einzige Problem, das ich hatte, ist das Aktualisieren. Wenn Sie mit großen Repositorys arbeiten, kann es langsam sein, dass Atom Änderungen aktualisiert, die Sie außerhalb davon vornehmen. Ich schließe es einfach immer, wenn ich fertig bin, und öffne es dann erneut, wenn ich meine Änderungen / Commits erneut anzeigen möchte. Sie können das Fenster auch mit Strg + Umschalt + F5 neu laden, was nur eine Sekunde dauert.

Und es ist natürlich kostenlos.

Sean McCallum
quelle
3

Ich benutze verschiedene Tools zum Zusammenführen und Vergleichen:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

Faust könnte gerufen werden durch:

git difftool [BRANCH] -- [FILE or DIR]

Zweitens wird aufgerufen, wenn Sie verwenden git mergetool.

Ephemerr
quelle
2

Sie können das ECMerge Diff / Merge-Tool auf Ihrem Linux, Mac oder Windows installieren . Es ist in Git vorkonfiguriert, so dass nur die Verwendung git mergetoolden Job erledigt.

Armel
quelle
2

Wenn Sie Visual Studio verwenden , ist das in Team Explorer integrierte Tool ein sehr nützliches Tool zum Lösen von Git-Merge-Konflikten.

Charith
quelle
0

gitx http://gitx.frim.nl/

Einige Fehler beim Arbeiten mit großen Festschreibungssätzen, aber ideal zum Durchsuchen von Änderungen und Auswählen verschiedener Änderungen für die Phase und anschließendes Festschreiben.

Blake Lucchesi
quelle