如果我在我的仓库上运行'git status',它会给出:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: myfile
但是,如果我执行'git diff myfile',则表示没有差异。这是因为我做了一个更改并将其删除,以便它恢复原状吗?
我应该运行'git checkout myfile'来清除吗?
答案 0 :(得分:60)
您的文件已暂存以提交。你可以使用git的--cached
选项来显示它的差异。
git diff --cached myfile
要取消它,只需执行git status在其输出中建议的内容;)
您可以查看The Git Index了解详情。
答案 1 :(得分:10)
我偏爱--staged
别名,主要是因为我发现--staged
实际意味着我想要做的事情,即向我展示阶段性差异。
git diff --staged
接受的答案是正确的,我对它没有任何疑虑。只是个人认为--cached
感觉就像git diff正在缓存答案并向我展示预先计算的结果或其他东西。
我也喜欢git diff HEAD
,因为它更通用。它汇集了大多数人都知道的两个概念,即:
git diff <commit>
可让您查看当前位置与之前提交之间的差异。
HEAD
(或head
,因为持有转移很烦人)是对分支提示的引用。 (对于那些计算击键次数的人,@
是HEAD
的别名。)
结合起来,这两个通常有用的概念导致:
git diff head
git diff @
答案 2 :(得分:0)
对于临时区域与存储库比较,请使用
$git diff --staged
对于工作与存储库比较,请使用
$ git diff
但如果文件已更改并添加到暂存区域($ git add fileName
),我们会尝试查看($ git diff
)的差异。它不会返回任何差异,因为文件位于暂存区域,并且不会与存储库进行比较。