git - 为什么 `git push --force-with-lease` 失败并显示 "rejected ... stale info"即使我的本地 repo 是最新的远程仓库?

标签 git git-push

我正在尝试将功能分支的 rebase 强制推送到远程存储库。为了更安全一点,我正在尝试使用 --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'

我尝试 fetch 以查看我的本地缓存是否以某种方式不同步:
$ 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'

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

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

最佳答案

在这种情况下,结果证明问题是远程分支已被删除,但我的本地存储库中仍有它的副本。默认情况下,Fetch 不会删除本地副本,这就是它不起作用的原因。

添加 --prune我最初的选项 git pull (在做我的 rebase 之前)纠正了这个问题。

关于git - 为什么 `git push --force-with-lease` 失败并显示 "rejected ... stale info"即使我的本地 repo 是最新的远程仓库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56191415/

相关文章:

java - 将 fragment 类传递到 addSlide 方法时需要表达式

git-svn 无法提交回 svn repo 尽管有干净的 rebase

git - 在 git push 上我得到错误 : error: invalid protocol: wanted 'old new ref'

git - 将文件夹移动到子模块中,现在收到 "Untracked files would be overwritten"消息

git - 为什么裸存储库有 HEAD

git push 不会将最新提交推送到远程

git - rebase 后 git 是否会推送所有本地提交?

git - .gitattributes 文件中的 "*.jpg binary -delta"有什么作用?

通过 WebDAV 进行 git http 推送 - 如果我的用户名中包含 "@"怎么办?

git - 如何让 git-push 永久跳过详分割支的提交?