简而言之;
更多背景;
我有一个带有数十个 Remote 的 git repo,它们已 merge 到 master 中。我可以使用以下方法一次删除这些 Remote :
git push --delete origin myBranch-1234
然而,对于所有 Remote 来说,这是一个缓慢而乏味的过程。所以我正在尝试这个命令:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
列出所有 merge 的 Remote 。grep origin
告诉命令包含原点。grep -v master
告诉命令排除主人。xargs git push origin --delete
告诉命令删除 Remote 列表。总之,我希望这能收集所有 merge 的 Remote 并删除它们。
当我运行上述命令时,每个 merge 的 Remote 都会收到以下信息;
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
然而,这些 Remote 确实存在,我可以检查它们中的每一个。许多网站和人们建议我运行
git fetch --prune
来清理丢失的引用。这没有任何作用,因为所有这些 Remote 都存在。所以我问你,亲爱的堆栈交换;
我想我错过了一些小东西。每次我研究这个时,似乎我都做对了,但我遇到了上述错误。
最佳答案
您可能需要先修剪远程分支的本地“缓存”。尝试运行:git fetch -p origin
删除前。
关于git 删除 Remote : remote refs do not exist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32147093/