[英]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.