829 Stimmen

Wie kann ich die "git diff"-Ausgabe mit meinem bevorzugten Diff-Tool/Viewer anzeigen?

Wenn ich tippe git diff Ich möchte die Ausgabe mit dem visuellen Diff-Tool meiner Wahl (SourceGear "diffmerge" unter Windows) anzeigen. Wie konfiguriere ich Git für diese Aufgabe?

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.

8voto

Eine kurze Zusammenfassung der bisherigen tollen Antworten:

git difftool --tool-help
git config --global diff.tool <chosen tool>
git config --global --add difftool.prompt false

Verwenden Sie es dann, indem Sie den Dateinamen eingeben (optional auch den Dateinamen):

git difftool

8voto

Sharas Punkte 848

Das funktioniert bei mir unter Windows 7. Es besteht keine Notwendigkeit für einen Vermittler _sh_ Skripte

Inhalt von .gitconfig:

    [diff]
      tool = kdiff3

    [difftool]
       prompt = false

    [difftool "kdiff3"]
      path = C:/Program Files (x86)/KDiff3/kdiff3.exe
      cmd = "$LOCAL" "$REMOTE"

0 Stimmen

Haben Sie auch kdiff3 als Ihr Mergetool definiert? Könnten Sie diesen Teil Ihrer Gitconfig teilen, wenn ja?

2 Stimmen

Danke! Das hat bei mir nicht ganz funktioniert, aber es funktionierte, als ich die path und geändert cmd à "\"C:/Program Files (x86)/KDiff3/kdiff3.exe\" \"$LOCAL\" \"$REMOTE\""

7voto

G. I. Joe Punkte 1405

Installieren Sie Meldung :

 # apt-get install meld

Dann wählen Sie dieses als Difftool:

 $ git config --global diff.tool meld

Wenn Sie es in der Konsole ausführen möchten, geben Sie ein:

 $ git difftool

Wenn Sie den Grafikmodus verwenden möchten, geben Sie ein:

 $ git mergetool

Und die Ausgabe wäre dann:

 'git mergetool' will now attempt to use one of the following tools:
 meld opendiff kdiff3 tkdiff xxdiff tortoisemerge gvimdiff diffuse
 diffmerge ecmerge p4merge araxis bc3 codecompare emerge vimdiff
 Merging:
 www/css/style.css
 www/js/controllers.js

 Normal merge conflict for 'www/css/style.css':
   {local}: modified file
   {remote}: modified file
 Hit return to start merge resolution tool (meld):

Drücken Sie also einfach Enter um Verschmelzung zu verwenden (Standard). Dies würde den Grafikmodus öffnen. Machen Sie das magische Speichern und drücken Sie darauf, um die Verschmelzung zu beenden. Das war's schon.

0 Stimmen

Ich liebe meld, aber es hat sich auf MacOs sehr schlecht verhalten, so dass ich zu sublime merge gewechselt habe.

6voto

Milan Gardian Punkte 11126

Einführung

Als Referenz möchte ich hier meine Variante von VonCs Antwort . Beachten Sie, dass ich die MSys-Version von Git (derzeit 1.6.0.2) mit geändertem PATH verwende und Git selbst über PowerShell (oder cmd.exe) und nicht über die Bash-Shell ausführe.

Ich habe einen neuen Befehl eingeführt, gitdiff . Die Ausführung dieses Befehls führt vorübergehend zu einer Umleitung git diff ein visuelles Diff-Programm Ihrer Wahl zu verwenden (im Gegensatz zu VonCs Lösung, die dies permanent tut). Dies ermöglicht es mir, sowohl die Standard-Git-Diff-Funktionalität ( git diff ) sowie die visuelle Diff-Funktionalität ( gitdiff ). Beide Befehle nehmen die gleichen Parameter an, so dass Sie zum Beispiel die Änderungen in einer bestimmten Datei visuell vergleichen können, indem Sie

gitdiff path/file.txt

Einrichtung

Beachten Sie, dass $GitInstall wird als Platzhalter für das Verzeichnis verwendet, in dem Git installiert ist.

  1. Erstellen Sie eine neue Datei, $GitInstall\cmd\gitdiff.cmd

     @echo off
     setlocal
     for /F "delims=" %%I in ("%~dp0..") do @set path=%%~fI\bin;%%~fI\mingw\bin;%PATH%
     if "%HOME%"=="" @set HOME=%USERPROFILE%
     set GIT_EXTERNAL_DIFF=git-diff-visual.cmd
     set GIT_PAGER=cat
     git diff %*
     endlocal
  2. Erstellen Sie eine neue Datei, $GitInstall\bin\git-diff-visual.cmd (anstelle von [visual_diff_exe] Platzhalter mit vollständigem Pfad zum Diff-Programm Ihrer Wahl)

     @echo off
     rem diff is called by git with 7 parameters:
     rem path old-file old-hex old-mode new-file new-hex new-mode
     echo Diffing "%5"
     "[visual_diff_exe]" "%2" "%5"
     exit 0
  3. Sie sind jetzt fertig. Ausführen gitdiff aus einem Git-Repository heraus sollte nun Ihr visuelles Diff-Programm für jede Datei aufrufen, die geändert wurde.

6voto

LuxuryMode Punkte 32625

Wenn Sie mit einem Mac arbeiten und über Xcode dann haben Sie FileMerge installiert. Der Terminal-Befehl ist opendiff, so können Sie einfach tun:

git difftool -t opendiff

2 Stimmen

Verwenden Sie die Option -y, um lästige Eingabeaufforderungen zu vermeiden. Leider wartet git, bis FileMerge beendet wird, bevor es die nächste geänderte Datei anbietet. Verwenden Sie die Option -d, um einen Verzeichnisvergleich auf einen Schlag durchzuführen.

0 Stimmen

Die Option -t scheint den vollständigen Pfad zu erfordern. Vielleicht ist die Verwendung von git difftool --extcmd=opendiff besser.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X