简而言之;
- 如何删除远程多个 merge 的 Remote ?
更多背景;
我有一个 git 存储库,其中包含数十个已 merge 到 master 中的 Remote 。我可以使用以下方法一次删除这些 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
告诉命令包含 origin。
grep -v master
告诉命令排除 master。
xargs git push origin --delete
告诉命令删除远程列表。
总而言之,我希望这会收集所有 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 都存在。
所以我问你,亲爱的堆栈交换;
- 为什么我可以删除一个 Remote ,但不能删除很多?
- 我的命令正确吗?
我想我遗漏了一些小东西。每次我对此进行研究时,似乎我都在正确地执行此操作,但我遇到了上述错误。
最佳答案
您可能需要先修剪远程分支的本地“缓存”。尝试运行:
git fetch -p origin
删除之前。
关于git 删除 Remote : remote refs do not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147093/