Ab git
Version 1.7.11 können Sie git difftool --dir-diff
einen Verzeichnisdifferenz ausführen.
Diese Funktion funktioniert beispielsweise gut mit Meld 3.14.2 und ermöglicht das Durchsuchen aller geänderten Dateien:
git difftool --dir-diff --tool=meld HEAD~ HEAD
Dies ist eine praktische Bash-Funktion:
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
Die folgende Antwort gilt für git
Installationen, die älter als Version 1.7.11 sind.
Dieselbe Frage wurde auf der Git-Mail-Liste gestellt .
Ich habe ein Shell-Skript zusammengestellt, das auf diesem E-Mail-Thread basiert und einen Verzeichnisunterschied zwischen beliebigen Commits ausführt.
Ab Git v1.7.10 ist das git-diffall
Skript in contrib
der Standard-Git-Installation enthalten.
Für Versionen vor v1.7.10 können Sie aus dem git-diffall
Projekt auf GitHub installieren .
Hier ist die Projektbeschreibung:
Das git-diffall-Skript bietet einen verzeichnisbasierten Diff-Mechanismus für git. Das Skript verwendet die Konfigurationsoption diff.tool, um zu bestimmen, welcher Diff-Viewer verwendet wird.
Dieses Skript ist mit allen Formularen kompatibel, mit denen eine Reihe von Revisionen für diff angegeben werden:
1) git diffall
: Zeigt den Unterschied zwischen dem Arbeitsbaum und den bereitgestellten Änderungen.
2) git diffall --cached [<commit>]
: Zeigt den Unterschied zwischen den Stufenänderungen und HEAD
(oder einem anderen benannten Commit).
3) git diffall <commit>
: Zeigt den Unterschied zwischen dem Arbeitsbaum und dem benannten Commit.
4) git diffall <commit> <commit>
: Zeigt den Unterschied zwischen zwei benannten Commits.
5) git diffall <commit>..<commit>
: Gleich wie oben
6) git diffall <commit>...<commit>
: Zeigen Sie die Änderungen auf dem Zweig, der bis zur Sekunde enthält, beginnend mit einem gemeinsamen Vorfahren von beiden<commit>
Hinweis: Alle Formulare verfügen über einen optionalen Pfadbegrenzer [--] [<path>]
Dieses Skript basiert auf einem Beispiel von Thomas Rast auf der Git-Liste .