簡體   English   中英

git delete remotes:遠程引用不存在

[英]git delete remotes: remote refs do not exist

簡而言之;

  • 如何刪除遠程多個合並的遙控器?

更多背景;

我有一個git repo,有幾十個遙控器已經合並成了主人。 我可以使用以下方法一次刪除這些遙控器:

git push --delete origin myBranch-1234

然而,對於所有遙控器來說,這是一個緩慢而乏味的過程。 所以我正在嘗試這個命令:

git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete

git branch -r --merged列出所有合並的遙控器。
grep origin告訴命令包含origin。
grep -v master告訴命令排除master。
xargs git push origin --delete告訴命令刪除遙控器列表。

總之,我希望這會收集所有合並的遙控器並刪除它們。

當我運行上面的命令時,我會收到每個合並的遙控器的以下內容;

error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc

然而,這些遙控器確實存在,我可以檢查每個遙控器。 許多網站和人們建議我運行git fetch --prune來清理缺少的引用。 這沒有任何作用,因為所有這些遙控器都存在。

所以我問你,親愛的籌碼交換;

  • 為什么我可以刪除一個遙控器,但不是很多?
  • 我的命令是否正確?

我想我錯過了一些小事。 每次我研究這個,似乎我正確地做到了這一點,但我得到了上述錯誤。

您可能需要先修剪遠程分支的本地“緩存”。 試試跑步:

git fetch -p origin

在刪除之前。

那些分支是從遠程(原點)刪除的嗎? 如果是的話,你可以做到

git fetch --prune origin

否則,即使您在本地刪除它們,它們也可能返回。

更新:再次查看您的命令,看起來您正在錯誤地構建它。 你可能想要

git push origin --delete myBranch-1234

但相反,你正在做類似的事情

git push origin --delete origin/myBranch-1234

使用sed刪除'origin /'部分並更改lttile xargs部分。

git branch -r --merged | grep origin | grep -v -e master | sed s/origin\\/// |  xargs -I{} git push origin --delete {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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