2013-07-19 7 views
12

Als ich eine git difftool tun, Kaleidoscope zeigt mich alle Dateien, die in der linken Seitenleiste geändert haben:Git Difftool in Windows, um eine Liste aller geänderten Dateien zusätzlich zu Datei-Diffs (a la Kaleidoscope) zu sehen?

http://www.kaleidoscopeapp.com/static/img/screenshots/Changeset_Blocks.png

Gibt es ein diff-Tool in Windows, das mir so eine Liste von Dateien zeigen würde?

(Ich möchte nicht, dass das Tool alle Dateien gleichzeitig in separaten Fenstern öffnet. Ich suche nach einem einzelnen Fenster, das mir die Liste der geänderten Dateien anzeigt, und ich sollte klicken können auf einer bestimmten Datei seine diff zu sehen, wie im Kaleidoskop Screenshot)

gezeigt

Antwort

11

Sie git difftool in einer Art und Weise verwenden können, die alle Dateien auflistet (git1.8 + empfohlen):

git difftool --dir-diff 

Kopieren Sie die geänderten Dateien an einen temporären Speicherort und führen Sie ein Verzeichnis diff auf ihnen durch.
Dieser Modus wird vor dem Start des Diff-Tools nicht aufgefordert.

Sie können dann integrate it with a BeyondCompare for instance.

Oder mit WinMerge:

[diff] 
    tool = winmerge 
[difftool "winmerge"] 
    path = C:/Program Files (x86)/WinMerge/winmergeu.exe 
    cmd = \"C:/Program Files (x86)/WinMerge/winmergeu.exe\" -r -u \"$LOCAL\" \"$REMOTE\" 

, dass alle mit:

$ git difftool [<commit> [<commit>]] 

Das einzige Problem ist das git diff-Tool unter Windows wird in this blog post beschrieben, durch nitoyon.

Auf Unix und MacOS, git difftool --dir-diff eine symbolische Verknüpfung zum Arbeitsverzeichnis erstellen, wenn eine rechte Datei desselben SHA1 wie die Datei im Arbeitsverzeichnis hat. Es ist sehr nützlich, wenn wir rechte Dateien mit einem Diff-Tool modifizieren.

Unter Windows git difftool --dir-diff können Sie anstelle von symbolischen Verknüpfungen die Dateien der rechten Seite in das Arbeitsverzeichnis kopieren, nachdem das Programm difftool beendet wurde. Ich möchte Symlinks auf Git für Windows wie Unix und MacOS verwenden.

Hinweis: Unter Windows Administratorrechte erforderlich symbolische Verknüpfungen zu erstellen.

Führen Sie GitBash als Administrator aus, und geben Sie den folgenden Befehl ein.

$ git difftool -d --symlinks [<commit> [<commit>]] 

Wenn Sie möchten, einen Alias ​​auf .gitconfig erstellen.

[alias] 
    d = difftool -d --symlinks 

Aber das erfordert:

  • einen git mklink Befehl aus:
 
C:\Program Files (x86)\Git\libexec\git-core\git-mklink: 

#!/bin/sh 

cmd.exe /c "mklink \"$2\" \"$1\"" > /dev/null 
  • Patch msysgit 1.8.3:
 
cd /c/Program\ Files\ \(x86\)/Git/libexec/git-core/ 
$ patch 

With git-difftool.patch:

--- git-difftool Sun Jun 2 11:28:06 2013 +++ git-difftool Tue Jul 9 00:42:02 2013 @@ -283,7 +283,7 @@ exit_cleanup($tmpdir, 1); } if ($symlinks) { - symlink("$workdir/$file", "$rdir/$file") or + !system("git", "mklink", "$workdir/$file", "$rdir/$file") or exit_cleanup($tmpdir, 1); } else { copy("$workdir/$file", "$rdir/$file") or @@ -448,7 +448,7 @@ my $indices_loaded = 0; for my $file (@worktree) { - next if $symlinks && -l "$b/$file"; + next if $symlinks; next if ! -f "$b/$file"; if (!$indices_loaded) {
+0

Es gibt zwei zusätzliche Möglichkeiten zum Erstellen von Symlinks unter Windows, die nicht immer mit Administratorrechten ausgeführt werden müssen: 1. Deaktivieren Sie die Benutzerkontensteuerung. 2. Verwenden Sie den lokalen SSH-Server mit einem Konto ohne Administratorrechte und rufen Sie 'ssh user @ localhost mklink foo bar' auf. – vsizikov

Verwandte Themen