簡體   English   中英

為什么即使我的本地 repo 是最新的遠程倉庫,`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'

我嘗試稍微簡化一下 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM