git: Why doesn't git diff show any differences?
Your file is already staged to be committed. You can show it's diff using the --cached
option of git.
git diff --cached myfile
To unstage it, just do what git status suggests in it's output ;)
You can check The Git Index For more info.
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
(orhead
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 forHEAD
.)
Combined, these two generally useful concepts result in:
git diff headgit diff @
For Staging Area vs Repository comparison use
$git diff --staged
For Working vs Repository comparison use
$ git diff
but if a file is changed and added to staging area ($ git add fileName
) and we try to see the difference with ( $ git diff
). It will not return any difference since the file is in staging area and it will not be compared with the repository.