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欲了解更多信息。
答
我对--staged
别名有偏好,主要是因为我发现--staged
实际上意味着我想要做什么,即向我展示分阶段的差异。
git diff --staged
接受的答案是正确的,我对此毫无疑问。只是个人认为--cached
感觉就像git diff缓存答案并向我显示预先计算的结果或其他内容。
我也喜欢git diff HEAD
因为它是一个更一般的。这两个概念,大多数人知道放在一起,那就是:
git diff <commit>
让您看到您的当前位置和先前提交的区别。HEAD
(或head
,因为持有班次很烦人)是对您的分支的提示。 (对于那些你谁是计数按键,@
是HEAD
的别名。)
相结合,这两种通常有用的概念导致:
git diff head
git diff @
答
对于临时区域VS库比较使用
$git diff --staged
对于工作VS库比较使用
$ git diff
但是,如果文件被更改并添加到暂存区域($ git add fileName
),并且我们尝试查看与($ git diff
)的区别。它不会返回任何区别,因为文件处于暂存区域,并且不会与存储库进行比较。
这对我有用,但只有在我首先运行“git add”之后。谢谢。 – 2015-02-10 14:56:27