简而言之;

  • 如何删除远程多个 merge 的 Remote ?

  • 更多背景;

    我有一个带有数十个 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 都存在。

    所以我问你,亲爱的堆栈交换;
  • 为什么我可以删除一个 Remote ,但删除的不多?
  • 我的命令正确吗?

  • 我想我错过了一些小东西。每次我研究这个时,似乎我都做对了,但我遇到了上述错误。
  • Delete local and Remote Branches
  • gist Delete Merged Remotes
  • 最佳答案

    您可能需要先修剪远程分支的本地“缓存”。尝试运行:
    git fetch -p origin
    删除前。

    关于git 删除 Remote : remote refs do not exist,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32147093/

    10-13 09:24