为什么git diff显示错误的提交?

时间:2018-06-19 11:32:47

标签: git git-commit git-diff git-log

我正尝试使用下面显示的消息Add structure获取提交的差异,但是git diff fb237ff却显示了提交"Add title"的差异。如何获得我想要的SHA而不是此提交子项的差异?:

commit 31013a1 (HEAD -> master, origin/master)
Author: user.name <user.email>
Date:   Sun Jun 17 19:28:52 2018 +0100

    Add title

commit fb237ff
Author: user.name <user.email>
Date:   Sun Jun 17 19:24:33 2018 +0100

    Add structure

commit 69d64b4
Author: user.name <user.email>
Date:   Sun Jun 17 19:10:26 2018 +0100

    Add heading

3 个答案:

答案 0 :(得分:3)

git diff SHA显示了从命名提交到当前HEAD的差异-这将是自提交该提交以来已更改的所有内容-即最新提交。

您可能希望git show SHA向您显示该提交中包含的更改,或者git log -p向您显示提交消息和更改。

答案 1 :(得分:1)

git diff接受一个或两个修订版本进行比较。如果只提供一个,则将其与工作树进行比较。

如果您发布了git log -n 3的输出,则HEAD31013a1,以下Git命令是等效的:

git diff fb237ff
git diff HEAD~1

如果要显示由提交fb237ff引入的更改,则必须将其与父提交(69d64b4)进行比较。为此,可以使用以下任何命令:

git diff 69d64b4 fb237ff
git diff fb237ff~1 fb237ff
git diff HEAD~2 HEAD~1

阅读documentation of git diff以及如何指定Git revisions

答案 2 :(得分:1)

git diff <commit>向您显示工作目录和之间的区别。因此,在您的情况下,这确实是31013a1的内容(加上您可能进行的其他任何未提交的更改)。

为了查看一次提交引入的更改,您可以执行以下操作:

git show <commit>