I have a preference for the --staged
alias, mostly because I find that --staged
actually means what I want to do, i.e. show me the staged differences.
git diff --staged
The accepted answer is correct and I have no qualms with it. Just personally think that --cached
feels like git diff is caching the answer and showing me pre-calculated results or something.
I also like git diff HEAD
because it's a more general. It puts together two concepts that most folks know, that is:
git diff <commit>
allows you to see the difference between your current position and a previous commit.
HEAD
(or head
because holding shift is annoying) is a reference to the tip of your branch. (For those of you who are counting keystrokes, @
is an alias for HEAD
.)
Combined, these two generally useful concepts result in:
git diff head
git diff @