Git 即使在 `push --force` 之后也显示差异?

Git shows differences even after `push --force`?

简化:

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

后来我发现添加那个垃圾是错误的。 我知道我 can/should 创建了一个还原提交。

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

但现在我希望 origin/master 看起来与本地完全一样。

显然我不能推送,因为 git 告诉我在推送之前 pull

所以我做了 push --force

但即使在那之后,sourcetree 也显示它们不一样:

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

问题:

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

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

一般建议:每当包装 CLI 程序或库的 GUI 似乎行为不当时,最好直接检查实际的 CLI 程序或库。


在这种情况下,运行 一次获取:

git fetch origin

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

git log master origin/master

或者也许:

git branch --all --verbose

甚至:

git show master
git show origin/master

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

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

有时 Sourcetree 会与您的本地存储库不同步。发生这种情况时,只需告诉 Sourcetree 使用 F5 (Windows) 或 +R[ 刷新其视图=15=] (macOS).

SourceTree 定期检查远程状态。

解决方案 1:只需重新打开 Sourcetree

解决方案 2工具>选项>常规 每 X 分钟检查一次默认遥控器是否有更新。 将 X 设为 1/2 以更快地查看状态变化。就像图片一样,您可以在 1 分钟后看到更新的状态。

希望这会有所帮助。