git:为什么git diff不显示任何差异?

git:为什么git diff不显示任何差异?

问题描述:

如果我跑在我的回购“git的状态”它给:git:为什么git diff不显示任何差异?

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: myfile 

但是,如果我做一个“git的差异MYFILE”,也没有任何的差异。这是因为我做了一个改变,并将其删除,以便它回到原始状态?

我应该运行'git checkout myfile'来清除它吗?

您的文件已被暂存以提交。你可以使用git的--cached选项来显示它的差异。

git diff --cached myfile 

要unstage它,只是做git的状态显示在它的输出;)

您可以检查The Git Index欲了解更多信息。

+1

这对我有用,但只有在我首先运行“git add”之后。谢谢。 – 2015-02-10 14:56:27

我对--staged别名有偏好,主要是因为我发现--staged实际上意味着我想要做什么,即向我展示分阶段的差异。

git diff --staged 

接受的答案是正确的,我对此毫无疑问。只是个人认为--cached感觉就像git diff缓存答案并向我显示预先计算的结果或其他内容。

我也喜欢git diff HEAD因为它是一个更一般的。这两个概念,大多数人知道放在一起,那就是:

  1. git diff <commit>让您看到您的当前位置和先前提交的区别。

  2. HEAD(或head,因为持有班次很烦人)是对您的分支的提示。 (对于那些你谁是计数按键,@HEAD的别名。)

相结合,这两种通常有用的概念导致:

git diff head 
git diff @ 

对于临时区域VS库比较使用

$git diff --staged 

对于工作VS库比较使用

$ git diff 

但是,如果文件被更改并添加到暂存区域($ git add fileName),并且我们尝试查看与($ git diff)的区别。它不会返回任何区别,因为文件处于暂存区域,并且不会与存储库进行比较。