oklischat@oklischat:/tmp$ mkdir gittest oklischat@oklischat:/tmp$ cd gittest/ oklischat@oklischat:/tmp/gittest$ git init Initialized empty Git repository in /private/tmp/gittest/.git/ oklischat@oklischat:/tmp/gittest$ echo foo > foo.txt oklischat@oklischat:/tmp/gittest$ git add foo.txt oklischat@oklischat:/tmp/gittest$ git commit -m foo [master (root-commit) 54d55f2] foo 1 file changed, 1 insertion(+) create mode 100644 foo.txt oklischat@oklischat:/tmp/gittest$ echo bar > bar.txt oklischat@oklischat:/tmp/gittest$ git add bar.txt oklischat@oklischat:/tmp/gittest$ git commit -m bar [master 83b2e74] bar 1 file changed, 1 insertion(+) create mode 100644 bar.txt oklischat@oklischat:/tmp/gittest$ git tag bar-added oklischat@oklischat:/tmp/gittest$ git rm bar.txt rm 'bar.txt' oklischat@oklischat:/tmp/gittest$ git commit -m 'rm bar' [master 3ca4ff9] rm bar 1 file changed, 1 deletion(-) delete mode 100644 bar.txt oklischat@oklischat:/tmp/gittest$ oklischat@oklischat:/tmp/gittest$ git checkout bar-added -- bar.txt oklischat@oklischat:/tmp/gittest$ git reset HEAD oklischat@oklischat:/tmp/gittest$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) bar.txt nothing added to commit but untracked files present (use "git add" to track) oklischat@oklischat:/tmp/gittest$ git diff bar-added # would expect this to show no differences diff --git a/bar.txt b/bar.txt deleted file mode 100644 index 5716ca5..0000000 --- a/bar.txt +++ /dev/null @@ -1 +0,0 @@ -bar oklischat@oklischat:/tmp/gittest$ oklischat@oklischat:/tmp/gittest$ git diff bar-added -- bar.txt # dito diff --git a/bar.txt b/bar.txt deleted file mode 100644 index 5716ca5..0000000 --- a/bar.txt +++ /dev/null @@ -1 +0,0 @@ -bar oklischat@oklischat:/tmp/gittest$ `git diff --help' says: git diff [--options] <commit> [--] [<path>...] This form is to view the changes you have in your working tree relative to the named <commit>. If that were entirely true, the last two commands shouldn't have shown any differences, right? On closer inspection, it seems that what `git diff <commit>' really does is take only those paths in the working directory that are also in <commit> and compare the resulting tree against <commit>. We should add some option to that git diff form to make it really do what the docs claim it does. Or am I missing something?