【问题标题】:why `git diff` reports no file change after `git add`为什么`git diff`在`git add`之后报告没有文件更改
【发布时间】:2014-11-25 10:31:15
【问题描述】:

 为什么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

但为了看到区别,我需要显式添加最后一个回归哈希..

$ 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
.
..

【问题讨论】:

    标签: git git-diff git-add


    【解决方案1】:

    请尝试git diff --staged 命令。

    下面列出了可用的替代选项。

    git diff

    显示索引/暂存文件和工作文件之间的变化。由于在您的情况下,git add 将您的 files-with-changes 移动到暂存区,因此没有显示/看到任何修改。

    git diff --staged

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

    git diff HEAD

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

    git diff $commit $commit

    显示两次提交之间的变化

    git diff origin

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

    【讨论】:

      【解决方案2】:

      遇到了完全相同的问题。

      • 添加您使用 git add filename1.c 创建的新文件
      • 对已经是存储库跟踪系统一部分的其他文件名2.c 进行另一项更改。
      • 执行 git diff,您只会看到对 filename2.c 的更改。不会显示对 filename1.c 的更改。
      • 但是,如果您执行 git status,您将看到 filename1.c 和 filename2.c 中的更改。
      • 执行 git commit -a -m "Changes to filename1.c and filename2.c blah blah"
      • 执行 git push

      您将看到 filename1.c 已提交。

      【讨论】:

        【解决方案3】:

        git diff 与索引不同,而不是与您的 HEAD 修订版不同。通过运行git add,您已将更改放入索引中,所以当然没有区别!使用

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

        【讨论】:

          【解决方案4】:

          因为git diff 默认检查暂存区和您的工作副本之间的差异。当您git add 时,您的暂存区与您的工作副本匹配,因此 diff 报告没有任何更改。

          添加 --cached 标志告诉 diff 与 HEAD 进行比较。

          【讨论】:

            猜你喜欢
            • 2020-11-10
            • 2017-10-28
            • 2011-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-28
            • 2011-01-12
            • 2021-08-10
            相关资源
            最近更新 更多