为什么 `git push --force-with-lease` 会因 "rejected ... stale info" 而失败,即使我的本地存储库是远程最新的?
Why is `git push --force-with-lease` failing with "rejected ... stale info" even when my local repo is up to date with remote?
我正在尝试强制将功能分支的变基推送到远程存储库。为了安全起见,我尝试使用 --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'
我尝试稍微简化一下推送命令:
$ 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'
如您所见,每次都以相同的方式失败。
为什么我的推送失败,我该如何解决?
在这种情况下,问题出在远程分支已被删除,但在我的本地仓库中仍有它的副本。默认情况下,Fetch 不会删除本地副本,这就是它不起作用的原因。
将 --prune
选项添加到我的初始 git pull
(在执行我的 rebase 之前)纠正了这个问题。
如果您刚刚完成变基并且不想重新开始,请运行 git remote prune origin
。如果您再 运行 git push --force-with-lease
,它将起作用。
在我的例子中,一个简单的 git fetch
然后再次推送解决了问题。
你可能会遇到这个问题,当你使用
gh pr checkout <num>
并尝试在进行一些更改后强制推送。
推送给其他人 pr 的正确方法是将远程添加到那里的 repo 并签出到用于创建 pr 的分支。然后你可以推送你的提交。它会出现在 pr.
我正在尝试强制将功能分支的变基推送到远程存储库。为了安全起见,我尝试使用 --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'
我尝试稍微简化一下推送命令:
$ 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'
如您所见,每次都以相同的方式失败。
为什么我的推送失败,我该如何解决?
在这种情况下,问题出在远程分支已被删除,但在我的本地仓库中仍有它的副本。默认情况下,Fetch 不会删除本地副本,这就是它不起作用的原因。
将 --prune
选项添加到我的初始 git pull
(在执行我的 rebase 之前)纠正了这个问题。
如果您刚刚完成变基并且不想重新开始,请运行 git remote prune origin
。如果您再 运行 git push --force-with-lease
,它将起作用。
在我的例子中,一个简单的 git fetch
然后再次推送解决了问题。
你可能会遇到这个问题,当你使用
gh pr checkout <num>
并尝试在进行一些更改后强制推送。
推送给其他人 pr 的正确方法是将远程添加到那里的 repo 并签出到用于创建 pr 的分支。然后你可以推送你的提交。它会出现在 pr.