Git仓库在pull后显示已经是最新的,但是文件没有更新。

75

我有3个仓库。一个裸仓库,我用作主仓库;一个开发仓库,在其中进行更改和测试;以及一个生产仓库,从中在生产环境中执行脚本。

在我测试了开发仓库中的更改后,我将它们推送到裸仓库,并使用基本脚本(执行git pull命令)在cronjob上自动拉取到生产仓库。

我按照上述过程进行了更改,但更改后的文件不会更新到生产仓库。

  • 更改已在开发仓库中检查并推送
  • 已对生产仓库进行了拉取
  • 所有仓库的git日志都相同,都显示此更改的checkin
  • 所有仓库的git分支都给出“* master”
  • 所有仓库的git状态都给出: # On branch master nothing to commit, working directory clean
  • 对于开发和生产仓库,git pull均显示“Already up-to-date”

使用git扩展程序的图形化视图,每个仓库似乎都是最新且处于头部。

我已尝试:

git checkout HEAD  
git pull origin master  
git reset --hard HEAD  
git reset --hard origin/master  
git reset origin/master  

有人可以在这里提供帮助吗?

5个回答

210

试试这个:

 git fetch --all
 git reset --hard origin/master

解释: git fetch 从远程下载最新的内容,而不尝试合并或变基任何东西。

3
嗨,没错,那个方法起作用了,谢谢!我仍然不明白为什么没有任何标志表示不同步,而日志却显示所有的存储库都匹配,但这无论如何解决了问题!我会进一步学习fetch的。 - bren
5
我也遇到过这个问题,“git fetch”单独使用没有拉取我的更改。但是,“git fetch --all”解决了这个问题。很奇怪。 - Strobe_
谢谢,它对我有用!然后 git pull 最终下载了最新版本。 - enri
太棒了,对我很有用。我删除了一个本地目录,但是git pull说我已经是最新的了,但是这个命令重新获取了被删除的目录。谢谢! - James Hooper

2
如果你只对将特定的本地分支更新到最新状态感兴趣:
git fetch origin
git reset --hard origin/[name of your branch]

2

我的分支与主分支不同步,所以我去了Bitbucket同步并合并了我的分支,然后尝试拉取。然后就可以正常工作了。


2
我第一次使用分叉存储库,并没有意识到这种情况。将我的分叉存储库与上游(原始)存储库同步,然后可以获取更改并应用到本地。参考:https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork - user0904

1
自从Git强制使用SSH后,我一直遇到同样的问题。以前都很好,但现在运行Git Pull时总是显示“已经更新到最新版本”。我运行了上面的命令,但没有任何作用。Git有点像蓝牙。工作时非常好,但出了问题就很烦人。哈哈。

0

我们的上游仓库存在错误的master标签,因此不得不在我们的分支仓库中删除它:

git reset --hard upstream/master 
git tag -d master
git push origin master

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接