tags:

views:

123

answers:

3

Every piece of documentation I've read on git (including the online book and the built-in help) says I can type "git diff" from command line, but whenever I do that I get:

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

Here's what I've tried so far (all are examples from the documentation):

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

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

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

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

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

$ git --version
git version 1.7.1

Am I missing something here?

A: 

Use git diff --no-index. The [] means the argument is optional.

Femaref
+4  A: 

Are you actually inside a directory with a Git repository when you're running these? (git rev-parse --git-dir) The command needs to be able to find the repository and determine what your working tree is in order to produce useful output. Otherwise (if a repository cannot be identified), it defaults to being a plain recursive-diff command, and needs two paths to operate.

araqnid
Yeah that was it. The documentation makes no mention of this "feature" of git diff. How did you guys know about this mode of operation?
Karl
@Karl: From the [ *git diff* manpage](http://www.kernel.org/pub/software/scm/git/docs/git-diff.html): “If exactly two paths are given, and at least one is untracked, compare the two files / directories. This behavior can be forced by --no-index.”
Chris Johnsen
+1  A: 

Are you working in a git repository? If you do a git status, do you get something close to the following?

> $ git status
> # On branch develop.new_feature
> # Changed but not updated:
> #   (use "git add <file>..." to update what will be committed)
> #
> # modified:   feature
> # modified:   www/jkll.jsp
> #
> # Untracked files:
> #   (use "git add <file>..." to include            ...
labratmatt