Noa*_*oam 40 git git-diff git-status
如果我在我的仓库上运行'git status',它会给出:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: myfile
Run Code Online (Sandbox Code Playgroud)
但是,如果我执行'git diff myfile',它就没有显示出任何差异.这是因为我做了一个更改并将其删除,以便恢复原状吗?
我应该运行'git checkout myfile'来清除它吗?
Mar*_*gen 62
您的文件已暂存为已提交.你可以使用--cachedgit选项显示它的差异.
git diff --cached myfile
Run Code Online (Sandbox Code Playgroud)
要取消它,只需执行git status在其输出中建议的内容;)
您可以查看Git索引了解更多信息.
Liy*_*ang 11
我偏爱--staged别名,主要是因为我发现--staged实际上意味着我想要做的事情,即告诉我阶段性的差异.
git diff --staged
Run Code Online (Sandbox Code Playgroud)
接受的答案是正确的,我对它没有任何疑虑.只是个人认为--cached感觉像git diff正在缓存答案并向我展示预先计算的结果或其他东西.
我也喜欢,git diff HEAD因为它更通用.它汇集了大多数人都知道的两个概念,即:
git diff <commit> 允许您查看当前位置与先前提交之间的差异.
HEAD(或head因为持有班次令人讨厌)是对你的分支的提示的参考.(对于那些计算击键次数的人来说,@是别名HEAD.)
结合起来,这两个通常有用的概念导致:
git diff head
git diff @
Run Code Online (Sandbox Code Playgroud)