Order of commit arguments in git diff

In what order does the git command

git diff [--options] <commit> <commit> [--] [<path>…]

Compare the different commits against each other? It seems like if I want to compare the new against the old one I need to do

git diff [--options] <New_commit> <Old_commit> in order to see the current diff?

I usually do git diff [--options] <Old_commit> <New_commit>

But that seems to be wrong?

When I do for example

$ git diff `git rev-list --since="jun 30 2014" --reverse origin/master | head -1` `git rev-list --until="dec 31 2014" origin/master | head -1` --shortstat 

1072 files changed, 389650 insertions(+), 39180 deletions(-)

But when I do

$ git diff --stat `git rev-list --until="dec 31 2014" origin/master | head -1`

I get the printout that:

384 files changed, 61255 insertions(+), 20526 deletions(-)

Which is not near 300000. So my question is if I should insert the new commit first and the old commit sedond, like:

 $ git diff `git rev-list --until="dec 31 2014" origin/master | head -1`..`git rev-list --since="jun 30 2014" --reverse origin/master | head -1` 

I can’t find any documentation about in which order I should insert the commits in order to see the difference between my new and my old commit. Perhaps you can clarify this for me?

Thanks in advance.

The reason I’m asking is that I want to

  1. know how many new lines of code that has been added to a new commit given an old commit, and

  2. I want to calculate the number of lines of code in the new commit.

  • Running git diff-tree with --numstat and --name-status
  • What is the rule of MSYS/MinGW path translation?
  • How can I do case insensitive git diffing?
  • Git pre-commit hook to regenerate a file and reject the commit if there are diffs
  • Git Diff and Meld on Windows
  • Is there a script which fixes git-diff --check warnings?
  • Git diff between current branch and master but not including unmerged master commits
  • Git diff without the pluses and minuses
  • One Solution collect form web for “Order of commit arguments in git diff”


    In the following git-diff syntax,

    git diff [--options] <commit> <commit> [--] [<path>...]
    • the first <commit> corresponds to the base commit,
    • the second <commit> corresponds to the commit to compare to the base commit.

    Using a mathematically inspired notation,

    git diff <x> <x+∆x>

    will show you the difference ∆x, whereas

    git diff <x+∆x> <x>

    will show you the difference -∆x.

    Note that, because the two commits need not be ordered in any way, either chronologically or topologically, calling them “old” and “new” (as you do) is a bit misleading.

    More details

    You can learn a great deal simply by looking up the git-diff man page. Under the Description section, you’ll find

    git diff [--options] <commit> <commit> [--] [<path>...]

    This is to view the changes between two arbitrary <commit>.

    Granted, that doesn’t tell you which commit is which, but, further down, under the Examples section, you’ll find a couple of illuminating examples:

    git diff HEAD^ HEAD

    Compare the version before the last commit and the last commit.


    git diff topic...master


    Changes that occurred on the master branch since when the topic branch was started off it.

    Git Baby is a git and github fan, let's start git clone.