Früher habe ich Konflikte mit P4merge gelöst. Ich fand es OK, aber ich habe nicht darauf geachtet, wie es die Arbeit unter der Haube macht. Bis vor kurzem habe ich festgestellt, dass es versucht, die Zusammenführung von selbst durchzuführen. Infolgedessen zeigt es nicht die gleichen Konflikte wie Git, und das hat meinen Manager frustriert (wie in let's switch back to clearcase
frustriert).
Die Frage ist: Git fügt einer Datei Anmerkungen hinzu, die nicht ähnlich wie diese zusammengeführt werden können
<<<<<<< HEAD
this code
=======
the other code
>>>>>>> feature/branch-name
Gibt es ein grafisches Tool, das diese Anmerkungen liest und Ihnen dann die Möglichkeit gibt, die eine oder andere zu behalten und die Anmerkungen dann zu entfernen?
Das Tool sollte für Linux und vorzugsweise kostenlos sein, aber da die Organisation die Kosten übernimmt, kann es auch bezahlt werden.
Anmerkungen werden leider kdiff3
auch nicht berücksichtigt. Zunächst einmal hat das Setup nicht funktioniert, aber keine große Sache, ich habe das .gitconfig
auf geändert
[mergetool "kdiff3"]
cmd = /path/to/kdiff3 $BASE $REMOTE $LOCAL -o $MERGED
und es hat funktioniert. Habe dann aber kdiff3
folgendes gemeldet:
Nicht genau das, was ich erwartet hatte: Ich hatte 4 Konflikte und das Tool sagt, dass es 2 gibt. Außerdem lässt mich die Nr of automatically solved conflicts
Nachricht denken, dass kdiff3
es einen eigenen Zusammenführungsalgorithmus anwendet, was das Gegenteil von dem ist, was wir wollen.
kdiff3
kann damit umgehen. Es ist ein generisches diff
Anzeige- und Zusammenführungstool (das Sie auch außerhalb von VCS verwenden können, um beispielsweise den Inhalt von Verzeichnissen zu vergleichen).
Wenn Sie dies verwenden, git
können Sie dies in Ihrem haben gitconfig
:
[mergetool "kdiff3"]
trustExitCode = false
keepBackup = false
[merge]
tool = kdiff3
conflictstyle = diff3
damit git mergetool
nach einer fehlgeschlagenen Zusammenführung das Tool automatisch für Sie gestartet wird.
kdiff3
wird versuchen, die trivialen Dinge für Sie zusammenzuführen, und Ihnen ein 4-Fenster-Fenster präsentieren, um die nicht trivialen Dinge zu lösen, basierend auf git
Anmerkungen zu Zusammenführungsfehlern.
Die obere Reihe ist in 3 Bereiche aufgeteilt, um Ihnen Folgendes zu zeigen:
Die untere Zeile ist ein bearbeitbarer Text, der das Ergebnis der Zusammenführung ist, basierend auf Ihrer Auswahl.
Sie können entweder die Optionen A, B oder C auswählen, um entweder die Änderungen in A, B oder C in der resultierenden Zusammenführung anzuwenden. Oder Sie können die Dinge im unteren Texteditor selbst bearbeiten.
Siehe diesen Screenshot: http://kdiff3.sourceforge.net/doc/screenshots.html#dirmergebigscreenshot
kdiff3
ist freie Software und funktioniert überall dort, wo KDE funktioniert. Die Schnittstelle ist ein wenig veraltet, aber es funktioniert.
Andere Optionen:
meld
, siehe http://meldmerge.org/ ; Die Benutzeroberfläche ist schöner als, kdiff3
aber ich fand sie hinsichtlich der Funktionen für meine Bedürfnisse weniger vollständiggit-config
Wenn Sie unter dem Schlüssel einen Blick darauf werfen, merge.tool
sehen Sie eine Liste von Software, die Git kennt, um Zusammenführungen aufzulösen. Dies könnte Ihnen Ideen geben, was Sie testen können, um das Beste für Sie herauszufinden. Auf meiner Installation ist die Liste: araxis
, bc
, bc3
, codecompare
, deltawalker
, diffmerge
, diffuse
, ecmerge
, emerge
, examdiff
, gvimdiff
, gvimdiff2
, , gvimdiff3
, kdiff3
, meld
, opendiff
, p4merge
, tkdiff
, tortoisemerge
, vimdiff
, vimdiff2
, vimdiff3
,winmerge
xxdiff
meld
, waren aber nicht zufrieden damit. Wir haben auch versucht IntelliJ
, mit dem gleichen Ergebnis zu verschmelzen. Ich kann nicht schnell testen, kdiff3
da ich auf RHEL bin, mit Gnome und einem lokalen Repository ohne Qt
. Es wird einige Zeit dauern, bis ich Feedback gebe.-1
Antwort - obwohl ich nicht beabsichtige, abzustimmen. kdiff3
scheint Anmerkungen nicht zu respektieren, der Screenshot beweist es nicht und meld führt auch seine eigene Zusammenführung durch. Wenn ich also nichts in kdiff3
der Konfiguration von übersehen habe, ist das keine richtige Antwort. Obwohl ich erfahren habe, conflictstyle = diff3
was ich bis jetzt ignoriert habe.kdiff3
stimmen nicht mit deinen überein, tut mir leid. Bei meiner Verwendung hat es mit Git immer korrekt funktioniert, alle möglichen Zusammenführungen von selbst durchgeführt und mich mit denen zurückgelassen, die zu kompliziert sind, um automatisch gelöst zu werden. Beachten Sie auch, dass ich git nicht so konfigurieren musste, wie Sie es tun mussten, also haben Sie vielleicht ein ganz anderes Setup. Tut mir leid, wenn es bei dir nicht funktioniert, ich hoffe, du bekommst dann andere bessere Antworten.Wenn Sie bereit sind, die Verwendung von Emacs oder Vim zu lernen, bieten sie dank ediff bzw. vimdiff genau das, was Sie wollen:
Sie führen keine Algorithmen aus: Git erledigt die Arbeit. Sie sind einfach Schnittstellen, die es angenehmer machen, den Konflikt zu lösen.
Um ediff zu verwenden, öffnen Sie Ihre Datei in Emacs und führen Sie smerge-ediff
Emacs aus oder stellen Sie es so ein, dass es automatisch gestartet wird. In dieser Emacs Stack Exchange-Antwort finden Sie ein Bild der Benutzeroberfläche und Einzelheiten zu den Tastenkombinationen. Eine Alternative ist die Installation des magit - Pakets , das jedoch ediff verwendet magit-ediff
.
Um vimdiff zu verwenden, können Sie es als Ihr Merge-Tool in der Git-Konfiguration festlegen. Die Schnittstelle ist ziemlich ähnlich.
Patrick Mevzek
kdiff3
werden Konflikte automatisch nur auf der Grundlage von Leerzeichen gelöst. Sie haben jedoch viele Optionen zum Konfigurieren in den Einstellungen, wenn Sie das Verhalten ändern möchten. Siehe stackoverflow.com/a/15813064/6368697 : "Wenn Sie wirklich die automatische Auflösung deaktivieren möchten, fügen Sie einfach --qall zur kdiff3-Befehlszeile hinzu". Sie sagten auch, Sie haben 4 Konflikte und das Tool sagt 2, aber ohne zu sehen, was Sie sehen, ist es schwierig, Ihre Situation und den Grund für die Diskrepanz zu verstehen.Stelios Adamantidis
kdiff3
anderes Tool, um Konflikte alleine zu lösen . Ich möchte, dass es die Konflikte respektiert, die git erzeugt, anstatt die Zusammenführung zu wiederholen.Patrick Mevzek
--qall
. Aus der Hilfe: "Konflikte nicht automatisch lösen.". Ich dachte immer, es ist eine seiner Stärken, damit ich keine Zeit mit trivialen Konflikten verlieren muss, aber Sie haben zumindest die Möglichkeit, es zu deaktivieren. YMMV.