Zur Vervollständigung meiner vorherigen "diff.external" Konfigurationsantwort oben:
Als erwähnt von Jakub , Git1.6.3 eingeführt git difftool die ursprünglich im September 2008 vorgeschlagen wurde:
USAGE= '[--tool=tool] [--commit=ref] [--start=ref --end=ref] [--no-prompt] [file to merge]'
(Siehe --extcmd
im letzten Teil dieser Antwort)
$LOCAL
enthält den Inhalt der Datei ab der Startrevision und $REMOTE
enthält den Inhalt der Datei in der Endrevision.
$BASE
enthält den Inhalt der Datei in der Datei wor
Es ist im Grunde git-mergetool
geändert, um mit dem Git-Index/Arbeitsbaum zu arbeiten.
Der übliche Anwendungsfall für dieses Skript ist, wenn Sie entweder Staged- oder Unstaged-Änderungen haben und die Änderungen in einem Diff-Viewer nebeneinander sehen möchten (z.B. xxdiff
, tkdiff
, usw.).
git difftool [<filename>*]
Ein anderer Anwendungsfall ist, wenn man dieselben Informationen sehen möchte, aber beliebige Commits vergleicht (dies ist der Teil, in dem das Parsen von revarg besser sein könnte)
git difftool --start=HEAD^ --end=HEAD [-- <filename>*]
Der letzte Anwendungsfall ist, wenn Sie Ihren aktuellen Arbeitsbaum mit etwas anderem als HEAD (z. B. einem Tag) vergleichen möchten
git difftool --commit=v1.0.0 [-- <filename>*]
Hinweis: Seit Git 2.5, git config diff.tool winmerge
ist genug!
Siehe " git mergetool winmerge "
Und seit Git 1.7.11 haben Sie die Möglichkeit --dir-diff
um externe Diff-Tools zu starten, die zwei Verzeichnishierarchien auf einmal vergleichen können, nachdem zwei temporäre Verzeichnisse angelegt wurden, anstatt eine Instanz des externen Tools einmal pro Dateipaar auszuführen.
Vor Git 2.5:
Praktischer Fall für das Konfigurieren difftool
mit Ihrem benutzerdefinierten Diff-Werkzeug:
C:\myGitRepo>git config --global diff.tool winmerge
C:\myGitRepo>git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global difftool.prompt false
Wenn winmerge.sh in einem Verzeichnis in Ihrem PATH gespeichert ist:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
Wenn Sie ein anderes Tool haben (kdiff3, P4Diff, ...), erstellen Sie ein weiteres Shell-Skript und die entsprechende difftool.myDiffTool.cmd
config-Richtlinie.
Dann können Sie ganz einfach mit der Taste diff.tool
Konfiguration.
Sie haben auch diese Blogeintrag von Dave um weitere Details hinzuzufügen.
(Oder diese Frage für die winmergeu
Optionen)
Das Interessante an dieser Einstellung ist die winmerge.sh
Skript : Sie können sie anpassen, um besondere Fälle zu berücksichtigen.
Siehe zum Beispiel David Marmor 's Antwort unten für ein Beispiel, das sich mit:
- neu Dateien entweder im Ursprung oder im Ziel
- entfernt Dateien entweder im Ursprung oder im Ziel
Als Kem Mason Erwähnungen in seine Antwort können Sie auch vermeiden Sie jeden Wrapper, indem Sie die --extcmd
Option :
--extcmd=<command>
Geben Sie einen benutzerdefinierten Befehl zum Anzeigen von Diffs an. git-difftool
ignoriert die konfigurierten Standardeinstellungen und führt $command $LOCAL $REMOTE
wenn diese Option angegeben ist.
So wird zum Beispiel gitk
ist in der Lage, jede diff
Werkzeug .
120 Stimmen
In allen neueren Versionen von git können Sie "git difftool" statt "git diff" verwenden. Damit wird ein visuelles Diff-Programm geöffnet.
0 Stimmen
Bezüglich des neuen Skripts difftool habe ich unten eine Antwort hinzugefügt: stackoverflow.com/questions/255202/
2 Stimmen
Gitx - gitx.frim.nl . Das war's.
1 Stimmen
Eine kurze Anleitung finden Sie hier: nathanhoad.net/how-to-meld-for-git-diffs-in-ubuntu-hardy
0 Stimmen
git difftool -tool=opendiff
einfach ersetzenopendiff
mit was auch immer.6 Stimmen
Rufen Sie Ihr Repository in Git Bash auf. Geben Sie ein.
git config diff.tool winmerge
. Überprüfen Sie, ob es funktioniert, indem Sie Folgendes eingebengit difftool
. Beseitigen Sie die Eingabeaufforderung, indem Siegit config --global difftool.prompt false
. Ich empfehle p4merge anstelle von winmerge.0 Stimmen
(1.) zur Auflistung der unterstützten externen Diff-Tools tun
git difftool --tool-help
(2.) mit einem speziellen Diff-Tool zu öffnen wievimdiff
einfach tungit difftool --tool=vimdiff
. Dies ist eine Zusammenfassung von die Lösung, geschrieben von @JakubNarebski