[英]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'
我嘗試稍微簡化一下 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'
如您所見,它每次都以相同的方式失敗。
為什么我的推送失敗,我該如何解決?
如果您剛剛完成了 rebase 並且不想重新開始,請運行git remote prune origin
。 如果您然后再次運行git push --force-with-lease
,它將起作用。
在這種情況下,事實證明問題是遠程分支已被刪除,但在我的本地倉庫中仍然有它的副本。 默認情況下,Fetch不會刪除本地副本,這就是它無效的原因。
在我的初始git pull
添加--prune
選項(在執行我的rebase之前)糾正了這個問題。
在我的情況下,一個簡單的git fetch
然后再次推送解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.