git 删除 Remote : remote refs do not exist

标签 git git-remote

简而言之;

  • 如何删除远程多个 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/

相关文章:

git-clone 和 checkout 后 Hook

git - 从远程仓库中检索丢失的文件?

Git 从浅克隆中查找自 <ref> 以来修改过的文件

git - 为什么 Git 不允许我从备用远程查看分支?

git - 如何在 OpenShift 中保持文件同步?

git - 创建一个新分支

使用 TortoiseGit 和 Ansible 执行 Git Pull/Clone 时出现 GitLab SSL 握手错误

git - 将新分支推送到远程再次推送所有内容

GIT:如何正确地将远程分支下载到本地?

git - 恢复 git remote 意外推送的存储库更改