为什么即使我的本地仓库已与远程服务器保持同步,`git push --force-with-lease`仍会失败并显示“ rejected ... stale info”?

时间:2019-05-17 17:57:36

标签: git git-push

我正试图强制将功能分支的基础推到远程存储库。为了更加安全,我尝试使用--force-with-lease来确保自上次获取分支以来,该分支中没有发生其他更改。

由于我不了解的原因而失败:

$ git branch
* my-branch
  master

$ git push --force-with-lease origin my-branch -u
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'

我尝试进行获取以查看我的本地缓存是否以某种方式不同步:

$ git fetch

$ git push --force-with-lease origin my-branch -u
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'

我尝试简化一下push命令:

$ git push --force-with-lease
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'

我尝试将支票限制在我的分支机构

$ git push --force-with-lease=my-branch:origin/my-branch
To gitlab.com:example/my-project.git
 ! [rejected]        my-branch -> my-branch (stale info)
error: failed to push some refs to 'git@gitlab.com:example/my-project.git'

如您所见,它每次都会以相同的方式失败。

为什么我的推送失败,如何解决?

1 个答案:

答案 0 :(得分:0)

在这种情况下,原来的问题是远程分支已被删除,但是在我的本地仓库中仍然有它的副本。默认情况下,抓取不会删除本地副本,这就是为什么它无效的原因。

在我的初始--prune中添加git pull选项(在重新设置基准之前)可以解决此问题。