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
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) {
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