On Wed, 8 Feb 2006, Linus Torvalds wrote:
The largest reason for why "git diff" defaults to diffing against the
index (and not head) is _literally_ that it's faster. Yes, I'm ashamed,
but "git diff HEAD" takes 0.35 seconds for me, and "git diff" takes 0.07
seconds, and largely based entirely on that (and not "what would users
want"), I made the bad choice to default to git-diff-files for the "no
arguments" case.
I hang my head in shame. I just like the _instantness_ of "nothing
changed". That's a bad reason for choice of interfaces, though.
Btw, it was kind of luck (but it's definitely true) that the current "git
diff" semantics happen to also be what you do want during merges when you
try to resolve a conflict (while "git diff HEAD" is much less useful).
So making "git diff" default to diffing against HEAD is actually the wrong
thing to do during merging, where the current behaviour is exactly what
you'd want.
So I dunno.
Linus