为啥 git diff 显示错误的提交?
Posted
技术标签:
【中文标题】为啥 git diff 显示错误的提交?【英文标题】:Why is git diff showing wrong commit?为什么 git diff 显示错误的提交? 【发布时间】:2018-11-28 08:36:24 【问题描述】:我试图通过下面显示的消息 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
【问题讨论】:
How to see the changes in a git commit?的可能重复 【参考方案1】:git diff SHA
显示了从命名提交到当前 HEAD 的差异——这将是自提交以来发生的所有变化——即最新的提交。
您可能希望git show SHA
向您显示该提交中包含的更改,或者git log -p
显示提交消息和更改。
【讨论】:
【参考方案2】:git diff
接受一两个修订版进行比较。当只提供一个时,它会将工作树与它进行比较。
如果您发布了git log -n 3
的输出,那么HEAD
就是31013a1
,以下 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。
【讨论】:
实际上,与其他两个答案一样,git diff <tree-ish>
将<tree-ish>
与工作树进行比较。 (我必须一直查阅git diff
文档,因为它的规则在某些情况下与违反直觉的内容进行比较...)【参考方案3】:
git diff <commit>
显示您的工作目录和
为了查看一次提交引入的更改,您可以执行以下操作:
git show <commit>
【讨论】:
以上是关于为啥 git diff 显示错误的提交?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Git Diff/Patch 信息与该补丁的 Github 表示不同?
[SourceTree] - 提交代码失败 "git -c diff.mnemonicprefix=false -c core.quotepath=false" 之解决
使用SourceTree报git -c diff.mnemonicprefix=false -c core.quotepath=false revert --no-edit错误
使用SourceTree报git -c diff.mnemonicprefix=false -c core.quotepath=false revert --no-edit错误