Jeff King [off-list ref] writes:
Note that in all versions (the original, yours, and mine) we gloss over
the fact that <commit> can actually be any two objects (as long as they
are bother either tree-ishs or blobs).
Yeah, I thought about that, too. I think it would be nice to use more
precise placeholders like <tree-ish> or <object> (which do already
occur in other places), but I suspect it might be needed/useful at more
places and would better be done as a separate patch (preferably by someone
who is more familiar with the internals than me).
I'm not sure if it is worth documenting that subtlety here (at least
the tree-ish thing gets mentioned later in the description; I'm not
sure we ever document "git diff HEAD:Makefile HEAD^:Makefile"
anywhere).
There's gitrevisions(7) (also pointed to from the git-diff manpage)
which describes those in some detail.
Štěpán