为什么`git diff`报告`git add`后没有文件更改

eri*_*dal 18 git git-diff git-add

 为什么git diff认为没有变化

..即使git status报告他们被修改了

$ git status
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   file-added
    modified:   file-with-changes   << it knows there are changes
Run Code Online (Sandbox Code Playgroud)

但为了看到差异,我需要显式添加最后一个reversion哈希..

$ git diff
  (nothing)

$ git diff rev-hash
diff --git a/file-with-changes b/file-with-changes
index d251979..a5fff1c 100644
--- a/file-with-changes
+++ b/file-with-changes
.
..
Run Code Online (Sandbox Code Playgroud)

Bha*_*kar 32

请尝试git diff --staged命令.

您可以使用更多选项.

git diff

显示索引/暂存和工作文件之间的更改.在你的情况下,git add把它file-with-changes放到临时区域.因此,登台和工作文件之间没有区别.

git diff --staged

显示HEAD和索引/暂存之间的变化.git diff --cached也做同样的事情.staged并且cached可以互换使用.

git diff HEAD

显示HEAD和工作文件之间的变化

git diff $commit $commit

显示2次提交之间的更改

git diff origin

显示HEAD和远程/原点之间的差异


Car*_*rum 5

git diff针对索引的差异,而不是针对您的HEAD修订.通过运行git add,您已将更改放入索引中,因此当然没有差异!使用

  • git diff HEAD查看树状态和HEAD修订版本之间的差异,或
  • git diff --cached查看索引与HEAD修订版之间的差异.