查看当前状态和上一次提交之间的差异


92

有时,当我要进行提交时,我无法确切记得自上次提交以来发生的变化。如何查看代码当前状态和最后一次提交的差异?

Answers:


113

如果您尚未将任何文件添加到索引中(使用git add),只需执行

git diff

这将显示您的工作树和索引之间的差异。

如果已将文件添加到索引,则需要执行此操作以显示索引和最后一次提交(HEAD)之间的差异。

git diff --cached

最后,如果您想查看工作树中与最新提交(HEAD)相比所做的更改,您可以(如卡洛斯所指出的那样)

git diff HEAD

这些变化的组合git diffgit diff --cached


2
git diff将工作树与索引而不是HEAD进行比较。
卡洛斯·马丁·涅托

@CarlosMartínNieto先生,您是正确的。我已经改善了帖子以反映这一点。
Klas Mellbourn

我运行了,但是终端没有结束,我如何退出。什么都行不通。
弗朗西斯科·科拉莱斯·莫拉莱斯2014年

@KlasMellbourn,是否可以git diff在一个diff消息中将索引的状态和上一次提交的状态?
alpha_989

2
很好地弄清楚了它的git diff --cached HEAD^:)
alpha_989

33

如果您刚刚进行了提交,或者想查看与当前状态相比,上一次提交中发生了什么变化(假设您有干净的工作树),则可以使用:

git diff HEAD^

这会将HEAD与之前的提交进行比较。一个人也可以做

git diff HEAD^^

与2之前提交的比赛状态进行比较。要查看当前状态与某个提交之间的区别,只需执行以下操作:

git diff b6af6qc

哪里b6af6qc是提交哈希的示例。


3
Windows的git cmd版本的提示-您必须使用插入符号自己转义插入符号(^)。因此,“ git diff HEAD ^”应为“ git diff HEAD ^^”。同样,“ HEAD ^^”应输入为“ HEAD ^^^^”。
Eellor

1
在这个答案中,我认为“最后一次提交”是什么还不清楚。HEAD^是最新提交之前的提交。
克拉斯·麦本

3

您要求git区分当前/最后一次提交,其简写为HEAD

因此,git diff HEAD将工作树的当前状态与当前提交进行比较。


3

这也显示了差异以及已更改/修改了哪些文件。

$ git status 

显示索引文件和当前HEAD提交之间具有差异的路径,工作树和索引文件之间具有差异的路径以及git不能跟踪的工作路径(并且gitignore(5)不会忽略) )。首先是通过运行git commit提交的内容;第二和第三个是可以在运行git commit之前通过运行git add提交的内容。

https://www.kernel.org/pub/software/scm/git/docs/git-status.html


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.