Starting with git
v1.7.11, you can use git difftool --dir-diff
to perform a directory diff.
This feature works well with Meld 3.14.2 for example, and lets you browse all modified files:
git difftool --dir-diff --tool=meld HEAD~ HEAD
This is a handy Bash function:
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
The answer that follows applies to git
installations older than v1.7.11.
This same question was asked on the git mail list.
I put together a shell script based on that email thread which performs a directory diff between arbitrary commits.
Starting with git v1.7.10, the git-diffall
script is included in the contrib
of the standard git installation.
For versions before v1.7.10, you can install from the git-diffall
project on GitHub.
Here is the project description:
The git-diffall script provides a
directory based diff mechanism for
git. The script relies on the
diff.tool configuration option to
determine what diff viewer is used.
This script is compatible with all the
forms used to specify a range of
revisions to diff:
1) git diffall
: shows diff between
working tree and staged changes
2) git diffall --cached [<commit>]
: shows
diff between staged changes and HEAD
(or other named commit)
3) git diffall <commit>
: shows diff between
working tree and named commit
4) git diffall <commit> <commit>
: show diff
between two named commits
5) git diffall <commit>..<commit>
: same as
above
6) git diffall <commit>...<commit>
: show the changes
on the branch containing and up to the
second , starting at a common
ancestor of both <commit>
Note: all forms take an optional path
limiter [--] [<path>]
This script is based on an example
provided by Thomas Rast on the Git
list.