Vor kurzem habe ich GitExtension 2.46 verwendet, aber die Git-Version mit der gleichen Version ist 1.9.4.msysgit.2. Da ich nur Git-Befehle verwenden wollte, habe ich GitExtension deinstalliert und die neueste verfügbare Version von Git und KDiff3 installiert .
Wenn ich eine Zusammenführung durchführe und Konflikte habe, führe ich den folgenden Befehl aus:
$ git mergetool
Dann erhalte ich die Nachricht:
Das Zusammenführungstool kdiff3 ist nicht als 'kdiff3' verfügbar.
Ich denke, es muss über den KDiff3-Pfad sein.
Umgebung
- Betriebssystem: Windows 10
- Git 2.6.1.windows.1
- KDiff3 0,9,98 (64 Bit)
Fragen:
Was muss ich in der .gitconfig-Datei konfigurieren, damit der Befehl
$ git mergetool
die KDiff3-GUI mit den Versionen LOCAL , REMOTE , BASE und MERGED der Konfliktdatei öffnet ?Wie konfiguriere ich es für die Verwendung mit Diff-Tool?
Antworten:
Diese Seiten waren sehr hilfreich, fast Mergetool und Difftool . Ich habe die globale Konfiguration verwendet, kann aber problemlos vom Repository verwendet werden. Sie müssen nur die folgenden Befehle ausführen:
Die Verwendung der
trustExitCode
Option hängt davon ab, was Sie tun möchten, wenn das Diff-Tool zurückgegeben wird. Aus der Dokumentation :quelle
git config --global --add diff.guitool kdiff3
:git config --global --add diff.tool kdiff3
--add
fügt bei mehrmaligem Aufruf einen zweiten oder dritten Eintrag hinzu. Das ist später schwer zu beheben, da es nicht einfach mit entfernt werden kann--remove
. Nur einen Wert ohne--add
einzustellen, sollte in Ordnung sein.Nur um die Antwort von @ Joseph zu erweitern :
Nach dem Anwenden dieser Befehle enthält Ihre globale
.gitconfig
Datei die folgenden Zeilen (um den Vorgang zu beschleunigen, können Sie sie einfach in die Datei kopieren) :quelle
.gitconfig
Datei, die ich bearbeitet habe, wurde nicht verwendet. Unter stackoverflow.com/questions/2114111/… finden Sie Informationen zu den geladenen. (2) Nicht mischen und abgleichencmd =
undpath =
in gitconfig, TL; DR: cmd löschen und einfach pathFür Mac-Benutzer
Hier ist die akzeptierte Antwort von @ Joseph, jedoch mit dem Standard-Mac-Installationspfad von
kdiff3
(Beachten Sie, dass Sie dies kopieren und einfügen und auf einmal ausführen können.)
quelle
--add
da dies zu 2 Konfigurationseinträgen führen kann, wenn Sie den Befehl zweimal ausführen. Es ist ein Chaos, das aufzuräumen, weil Sie keinen einzigen Eintrag mehr löschen können. Siehe git-scm.com/docs/git-config : " Einer Option können mehrere Zeilen hinzugefügt werden"Das Problem ist, dass Git KDiff3 im% PATH% nicht finden kann.
In einer typischen Installation Unix alle ausführbaren Dateien befinden sich in einer Reihe von bekannten Orten (
/bin/
,/usr/bin/
,/usr/local/bin/
, etc.), und man kann , indem man einfach seinen Namen in einem Shell - Prozessor (zB ein Programm aufrufencmd.exe
:)).In Microsoft Windows werden Programme normalerweise in dedizierten Pfaden installiert, sodass Sie nicht einfach
kdiff3
einecmd
Sitzung eingeben und KDiff3 zum Laufen bringen können.Die schwierige Lösung: Sie sollten Git mitteilen, wo sich KDiff3 befindet, indem Sie den vollständigen Pfad zu angeben
kdiff3.exe
. Leider mag Git keine Leerzeichen in der Pfadspezifikation in seiner Konfiguration. Als ich dies das letzte Mal brauchte, hatte ich das alte "C: \ Progra ~ 1 ... \ kdiff3.exe", als wäre es spät 1990er Jahre :)Die einfache Lösung: Bearbeiten Sie Ihre Computereinstellungen und fügen Sie das Verzeichnis mit kdiff3.exe in% PATH% ein. Testen Sie dann, ob Sie es von cmd.exe mit seinem Namen aufrufen können, und führen Sie dann Git aus.
quelle
Ich musste die Befehlszeilenparameter hinzufügen, sonst würde KDiff3 nur ohne Dateien geöffnet und mich zur Eingabe von base, local und remote auffordern. Ich habe die mit TortoiseHg gelieferte Version verwendet .
Außerdem musste ich auf die guten alten DOS 8.3-Dateinamen zurückgreifen.
Es funktioniert jedoch jetzt korrekt.
quelle
Zu ändern kris ' Antwort , mit Git 2,20 (Q4 2018) beginnen, den richtigen Befehl für
git mergetool
sein wirdDas liegt daran, dass "
git mergetool
" gelernt hat, die--[no-]gui
Option " " zu wählen, genau wie "git difftool
".Siehe Commit c217b93 , Commit 57ba181 , Commit 063f2bd (24. Oktober 2018) von Denton Liu (
Denton-L
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 87c15d1 , 30. Oktober 2018)quelle
(Als ich versuchte herauszufinden, wie man kdiff3 von WSL git benutzt, bin ich hier gelandet und habe die letzten Teile bekommen, also werde ich meine Lösung für alle anderen veröffentlichen, die auch hier stolpern, während ich versuche, diese Antwort zu finden.)
Verwendung von kdiff3 als Diff / Merge-Tool für WSL-Git
Mit Windows Update 1903 ist es viel einfacher; Verwenden Sie einfach wslpath und Sie müssen TMP nicht von Windows für WSL freigeben, da die Windows-Seite jetzt über \ wsl $ auf das WSL-Dateisystem zugreifen kann:
Vor dem Windows Update 1903
Schritte zur Verwendung von kdiff3 unter Windows 10 als Diff / Merge-Tool für Git in WSL:
quelle