我运行git branch -a

* master
  remotes/origin/test
  remotes/origin/master

我想删除我的远程分支

我试过了

git push origin --delete remotes/origin/test

我得到了

错误:无法删除'remotes/origin/test':远程引用不 存在

怎么会不存在呢?

我做了一个git分支-a,我看到它列出来了。

我错过什么了吗?


当前回答

一个方便的单行程序,从原点删除'master'以外的分支:

git branch --remotes | grep -v 'origin/master' | sed "s/origin\///" | xargs -i{foo} git push origin --delete {foo}

在这样做之前,请确保您了解运行该程序的含义!

其他回答

迅速的回答

您只需要修剪列表(清除列表),因为该分支不再存在。 运行以下命令

git fetch --prune

验证运行

git branch -r

您应该看到一个只有现有远程回购的新列表

命令git branch -a显示本地存储库中存在的远程分支。这听起来可能有点令人困惑,但要理解它,您必须理解远程分支和存在于远程存储库中的分支之间的区别。远程分支是映射到远程存储库分支的本地分支。因此,远程分支的集合表示远程存储库的状态。

更新远程分支列表的常用方法是使用git fetch。这将自动从远程获取更新的分支列表,并在本地存储库中设置远程分支,还将获取您可能丢失的任何提交对象。

但是,默认情况下,git获取不会删除在远程上不再有对应分支的远程分支。为了做到这一点,你需要显式地修剪远程分支列表:

git fetch --prune

这将自动清除远程上不再存在的远程分支。然后,git branch -r会显示一个更新后的远程上真正存在的分支列表:以及那些你可以使用git push删除的。

也就是说,为了使用git push -delete,你需要在远程存储库上指定分支的名称;不是远程分支的名称。因此,要删除分支测试(由远程分支origin/test表示),可以使用git push origin——delete test。

对于windows

git branch --remotes| %{ $_.Trim().Split("/")[1] }| ?{ $_ -ne 'master' } | | ?{ $_ -ne 'otherBranch' } | %{ git push origin --delete $_ }

我遵循解决方案poke与一个小的调整在最后。我的步骤如下 - git获取-修剪; - git分支-打印如下 主 分支 remotes/origin/HEAD -> origin/master 遥控器/产地/主人 remotes/origin/branch(要删除的远程分支) - git push origin——删除分支。 在这里,要移除的分支没有命名为remotes/origin/branch,而是简单地命名为branch。分支被移除。

有一个快捷方式可以在原点中删除分支:

Git push origin:<branch_name>

这和git push origin——delete <branch_name>是一样的