Wie konfiguriere ich Git so, dass ein anderes Tool für die Abweichung von der .gitconfig-Datei verwendet wird?
Ich habe dies in meiner .gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
Es funktioniert nicht; Es öffnet nur das reguläre Kommandozeilen-Diff. Wenn ich es tue
export GIT_EXTERNAL_DIFF=git-chdiff
Dann git diff
wird das externe Diffing-Tool geöffnet (daher weiß ich, dass das Skript für das externe Diff-Tool einwandfrei funktioniert). Habe ich ein Problem mit meiner .gitconfig-Konfiguration für das Diff-Tool?
Antworten:
Git bietet eine Reihe von Difftools an, die "out-of-the-box" vorkonfiguriert sind (kdiff3, kompare, tkdiff, meld, xxdiff, emer, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge und araxis) und ermöglicht es Ihnen auch um Ihre eigenen zu spezifizieren. Um eines der vorkonfigurierten Difftools (z. B. "vimdiff") zu verwenden, fügen Sie Ihrem Folgendes die folgenden Zeilen hinzu
~/.gitconfig
:Jetzt können Sie "git difftool" ausführen und das Tool Ihrer Wahl verwenden.
Das Angeben eines eigenen Difftools erfordert dagegen etwas mehr Arbeit. Siehe Wie kann ich die Ausgabe von "Git Diff" mit meinem bevorzugten Diff-Tool / Viewer anzeigen?
quelle
.com
zu geändert hat.org
. Ich kann jeetworks.org/softwareEine zusätzliche Möglichkeit, dies zu tun (über die Befehlszeile):
In den ersten beiden Zeilen werden Difftool und Mergetool so eingestellt,
tkdiff
dass sie sich nach Ihren Wünschen ändern. In der dritten Zeile wird die nervige Eingabeaufforderung deaktiviert. Wenn Siegit difftool
sie drücken, wird das Difftool automatisch gestartet.quelle
git config --global diff.tool diffmerge
aber als ich es tatgit diff myfile.txt
, gab es mir immer noch das Standard-Unix-DiffAndere haben eine 99% ige Antwort darauf gegeben, aber es bleibt ein Schritt aus. (Meine Antwort kommt von OS X, daher müssen Sie die Dateipfade entsprechend ändern.)
Sie nehmen folgende Änderungen an Ihrem
~/.gitconfig
:Dadurch wird das Diff-Tool repariert. Sie können dies auch beheben, ohne das
~/.gitconfig
direkt zu bearbeiten, indem Sie diese Befehle über das Terminal eingeben:Die 1%, die alle anderen nicht erwähnt haben, sind, wenn Sie dies verwenden, können Sie nicht einfach laufen
git diff myfile.txt
; du musst rennengit difftool myfile.txt
.quelle
git config --global --add difftool.prompt false
. ;)Hier ist der Teil meiner ~ / .gitconfig, in dem ich Diff- und Merge-Tools konfiguriere. Ich mag Diffmerge von SourceGear. (Ich mag es tatsächlich sehr sehr).
Sie definieren also ein Werkzeug mit dem Namen "diffmerge" in der
[difftool "diffmerge"]
Zeile. Dann setze ich das Tool "diffmerge" als Standard in diesem[diff] tool =
Abschnitt.Ich habe hier offensichtlich den Befehl "diffmerge" auf meinem Weg. Andernfalls müsste ich der ausführbaren Datei einen vollständigen Pfad geben.
quelle
diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
diffmerge --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
ln-s <pathtodiffmerge>/sgdm_cygwin.sh /usr/local/bin/diffmerge
und können die oben beschriebene Konfiguration verwenden. Sowiediffmerge
direkt von der Cygwin-Kommandozeile mit Cygwin-Pfaden.sgdm.exe
heutzutageWiedergabe meiner Antwort aus diesem Thread, der spezifischer war als das Vergleichstool für Git. Alle Details, die ich geteilt habe, sind für jedes Diff-Tool im Allgemeinen gleichermaßen nützlich. Teilen Sie sie hier:
Der erste Befehl, den wir ausführen, lautet wie folgt:
Der obige Befehl erstellt den folgenden Eintrag im
.gitconfig
gefundenen%userprofile%
Verzeichnis:Dann führen Sie den folgenden Befehl aus (das Ausführen dieses Befehls ist in diesem speziellen Fall redundant und nur in einigen speziellen Fällen erforderlich. Sie werden es in Kürze wissen ):
Der obige Befehl erstellt den folgenden Eintrag in der
.gitconfig
Datei:Das, was Sie hier wissen müssen, ist der Schlüssel
bc3
. Dies ist ein bekannter Git-Schlüssel, der einer bestimmten Version bekannter Vergleichstools entspricht, die auf dem Markt erhältlich sind (bc3
entspricht der dritten Version des Beyond Compare-Tools). Wenn Sie alle vordefinierten Schlüssel sehen möchten, führen Sie einfach dengit difftool --tool-help
Befehl auf git bash aus. Es kehrt unter der Liste zurück:Sie können einen der oben genannten Schlüssel verwenden oder einen eigenen benutzerdefinierten Schlüssel definieren. Wenn Sie ein neues Tool (oder eine neu veröffentlichte Version eines bekannten Tools) einrichten möchten, das keinem der oben aufgeführten Schlüssel zugeordnet ist, können Sie es einem der oben aufgeführten Schlüssel oder einem neuen Schlüssel zuordnen Eigener Schlüssel.
Was ist, wenn Sie ein Vergleichstool einrichten müssen?
ODER
Wie in meinem Fall hatte ich Beyond Compare 4 installiert. Beyond Compare ist ein bekanntes Tool für Git, aber die Version 4 ist standardmäßig keinem der vorhandenen Schlüssel zugeordnet. Sie können also einen der folgenden Ansätze verfolgen:
Ich kann das Tool "Beyond Compare 4" einem bereits vorhandenen Schlüssel
bc3
zuordnen, der der Version "Beyond Compare 3" entspricht. Ich hatte keine vergleichbare Version 3 auf meinem Computer, also war es mir egal. Wenn ich wollte, hätte ich es auch einem der vordefinierten Schlüssel in der obigen Liste zuordnen können, zexamdiff
.Wenn Sie eine bekannte Version von Tools einem geeigneten bereits vorhandenen / bekannten Schlüssel zuordnen, müssen Sie den zweiten Befehl nicht ausführen, da der Installationspfad bereits bekannt ist .
Wenn ich beispielsweise über Version 3 hinaus auf meiner Box installiert
.gitconfig
hätte, wäre es ausreichend gewesen , die folgende Konfiguration in meiner Datei zu haben, um loszulegen:Wenn Sie jedoch das standardmäßig zugeordnete Tool ändern möchten, wird das
path
Attribut am Ende separat erwähnt, damit git den Pfad kennt, von dem aus die Exe Ihres neuen Tools gestartet werden muss. Hier ist der Eintrag, den Foxes Git jenseits von Vergleich 4 starten soll. Beachten Sie den Pfad der Exe:Am saubersten ist es, einen neuen Schlüssel für das neue Vergleichstool oder eine neue Version eines bekannten Tools zu definieren. Wie in meinem Fall habe ich einen neuen Schlüssel definiert,
bc4
damit er leicht zu merken ist. In einem solchen Fall müssen Sie insgesamt zwei Befehle ausführen, aber Ihr zweiter Befehl legt nicht den Pfad der ausführbaren Datei Ihres neuen Tools fest. Stattdessen müssen Sie dascmd
Attribut für Ihr neues Werkzeug wie unten gezeigt festlegen :Wenn Sie die obigen Befehle ausführen, werden die folgenden Einträge in Ihrer
.gitconfig
Datei erstellt:Ich würde Ihnen dringend empfehlen, Ansatz 2 zu befolgen, um in Zukunft keine Verwirrung für sich selbst zu verursachen.
quelle
Das Hinzufügen eines der folgenden Blöcke funktioniert für mich, um KDiff3 für meine Windows- und Linux-Entwicklungsumgebungen zu verwenden. Dies sorgt für ein schönes, konsistentes plattformübergreifendes Diff- und Merge-Tool.
Linux
Windows
quelle
trustExitCode = false
, Git wird Sie fragen, ob die Zusammenführung erfolgreich war, anstatt sich darauf zu verlassen, ob das Tool zufällig mit einem wahren oder falschen Status beendet wurde.Wenn Sie die Option haben möchten, mehrere Diff-Tools zu verwenden, fügen Sie .gitconfig einen Alias hinzu
quelle
--tool
Option. Vielen DankWeitere Informationen finden Sie unter Microsoft Vscode-Tipps und Tricks . Führen Sie einfach die folgenden Befehle in Ihrem Terminal aus:
git config --global merge.tool code
Aber zuerst müssen Sie
code
Ihrem PATH einen Befehl hinzufügen .quelle
In Windows müssen wir den
$git difftool --tool-help
Befehl ausführen , um die verschiedenen Optionen zu sehen:und wir können jeden von ihnen (zum Beispiel winmerge) wie hinzufügen
So konfigurieren Sie Notepad ++, um Dateien vor dem Festschreiben anzuzeigen:
und using
$ git commit
öffnet die Commit-Informationen in Notepad ++quelle