首页 > 解决方案 > 即使在`push --force`之后Git也会显示差异?

问题描述

简化:

在此处输入图像描述

在我的master分支中,我添加了一些垃圾。
然后我把它推到原点/主人

后来我发现添加那个垃圾是错误的。我知道我可以/应该创建一个还原提交。

但我没有。我做了一个git reset --hard

在此处输入图像描述

但现在我希望 origin/master 看起来与我的本地完全相同。

显然我不能推送,因为 gitpull在推送之前告诉我要推送。

所以我做了push --force

在此处输入图像描述

但即使在那之后,sourcetree 显示它们并不相同:

在此处输入图像描述

即使我检查更改,我也看不到任何更改:

在此处输入图像描述

问题:

如果远程master和本地master没有区别,为什么 sourcetree 显示我 pull

在此处输入图像描述

甚至git status显示我很好(没有拉):

在此处输入图像描述

标签: gitatlassian-sourcetree

解决方案


一般建议:每当包装 CLI 程序或库的 GUI 出现异常时,最好直接检查实际的 CLI 程序或库。


在这种情况下,运行 fetch:

git fetch origin

然后检查分支指向的位置:

git log master origin/master

也许:

git branch --all --verbose

甚至:

git show master
git show origin/master

允许您检查分支实际指向的提交(散列),从而确认(或不)GUI 是否有问题。

即使您确认 SourceTree 在重新打开它时没有显示问题,我也会直接与 Git 仔细检查,以防万一。


推荐阅读