"git diff" does nothing

Tom Lianza picture Tom Lianza · Aug 27, 2010 · Viewed 53.6k times · Source

I presume this is a configuration error somewhere, but I can't figure out where. Regular git commands appear to work fine, but "git diff" does nothing. To be safe, I removed external diff tools from my .gitconfig file. This was installed via MacPorts and is the lates version (1.7.2.2).

What I see is that when I run "git diff" from my workspace, it simply exits, doing nothing.

$ git --version
git version 1.7.2.2
$ git diff
$ 

If I back up one directory, out of my root workspace, typing "git diff" gives me this:

$ git diff
usage: git diff [--no-index] <path> <path>

This may be expected behavior since I'm not under a git repository.

Any ideas on what I can do to troubleshoot this?

Answer

Douglas picture Douglas · Aug 27, 2010

The default output for git diff is the list of changes which have not been committed / added to the index. If there are no changes, then there is no output.

git diff [--options] [--] […]

This form is to view the changes you made relative to the index (staging area for the next commit). In other words, the differences are what you could tell git to further add to the index but you still haven't.

See the documentation for more details. In particular, scroll down to the examples, and read this section:

$ git diff            # (1)
$ git diff --cached   # (2)
$ git diff HEAD       # (3)
  1. Diff the working copy with the index
  2. Diff the index with HEAD
  3. Diff the working copy with HEAD

Outside your workspace, as you guessed, git won't know what to diff, so you have to explicitly specify two paths to compare, hence the usage message.