Git 状态显示远程是最新的,尽管它不是

Git status says up-to-date with remote even though it's not

我们有一个 Git 存储库托管在多个同事访问的共享网络驱动器上。我将其称为“中央存储库”。员工将此存储库克隆到他们的本地计算机,进行更改,然后将更改推送回来。

我们注意到,如果有人将更改推送到中央存储库,其他员工的本地 Git 存储库不会表明它们不同步。 git status

On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

但它显然不是最新的。遥控器上有变化,但 Git 没有感应到它们。您可以执行 git pull,它会立即将更改下载到您的本地存储库,即使它声称它已经是最新的。

为什么会这样?是因为中央存储库托管在共享网络驱动器上吗?也许 Git 出于某种原因无法判断它是否不同步?使用像 Tower 这样的 GUI 也没有什么区别。即使在 GUI 中点击“刷新”也不会表明它不同步。另外,本地 master 分支正在跟踪 origin/master.

有什么办法可以解决这个问题吗?

您必须调用 git fetch 才能将更新从远程存储库获取到您的本地存储库,但不能更改您当前的分支位置。之后,git status 将显示正确的结果。