I have adapted my "dirdiff" program to be able to display differences between git trees (without checking them out). It can display the differences between up to 5 trees, each of which can be either a git tree (identified by a tree id, a commit id or a tag) or the working directory.
The main window summarizes which files have changed. Double-clicking on a file name pops up a diff viewer window which displays the differences between the different versions of the file in a color-coded unidiff format. I find it useful to copy .git/HEAD to .git/OLD_HEAD before doing an update on my linux-2.6 repository, and then after the update do
girdiff OLD_HEAD HEAD
to see what has changed. With the file list I can easily skip over files that I'm not interested in and then use the diff viewer to look at changes to files that I do care about.
I have called this version "girdiff" to distinguish it from my normal dirdiff releases. It is available at:
http://ozlabs.org/~paulus/girdiff
If invoked as girdiff, or if invoked as dirdiff and the -g flag is given, it will interpret its arguments as git trees rather than directory or file names. As a special case, the working directory is indicated by ".".
This is still under development and there are probably bugs - let me know if you find any.
Paul.