Git说远程引用不存在时,我删除远程分支

我运行git branch -a

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

我想删除我的远程分支

我试过了

git push origin --delete remotes/origin/test

我得到了

error: unable delete 'remotes/origin/test': remote ref does not 存在< / p >

怎么会不存在呢?

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

我错过什么了吗?

140381 次浏览

remotes/origin/test的含义是在远程服务器origin中有一个名为test的分支。所以命令是

git push origin --delete test

git push origin --delete yourBranch

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

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

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

git fetch --prune

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

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

git branch -a将列出本地的分支,而不是远程的分支。

error: unable to delete 'remotes/origin/test': remote ref does not exist错误意味着你的远程中没有这个名称的分支,但分支在你的本地中存在。

git push origin --delete origin/test

应该也可以

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

git push origin :<branch_name>

这和执行git push origin --delete <branch_name>是一样的

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

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

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

  1. 获取远程分支的列表
git fetch # synchronize with the server
git branch --remote # list remote branches
  1. 你应该得到一个远程分支的列表:
origin/HEAD -> origin/master
origin/develop
origin/master
origin/deleteme
  1. 现在,我们可以删除分支:
git push origin --delete deleteme

假设远程分支是remotes/origin/test,你可以使用两种方法:

git push origin --delete test

而且

git branch -D -r origin/test

对我来说,这是有效的$▶git branch -D -r origin/mybranch

细节

▶git branch -a | grep mybranch 遥控器/产地/ mybranch < / p > ▶git branch -r | grep mybranch 来源/ mybranch < / p > ▶git分支 开发 *功能/用于< / p > ▶git push origin——delete mybranch 错误:无法删除'mybranch': remote ref不存在 错误:未能将一些引用推到'git@10.102.100.38:config/myrepo.git'

.git ▶git branch -D -r origin/mybranch 删除远程分支来源/mybranch (was 62c7421).

▶git branch -a | grep mybranch

▶git branch -r | grep mybranch

我遵循的解决方案,最后进行了微小的调整。我的步骤如下
- git fetch --prune;
- git branch -a打印以下内容 < br >   master < br >   branch < br >   remotes/origin/HEAD -> origin/master < br >   remotes/origin/master < br >   remotes/origin/branch(要移除的远程分支)
- git push origin --delete branch
在这里,要移除的分支没有命名为remotes/origin/branch,而是简单地命名为branch。分支被移除。

对于windows

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

这应该会有帮助:

  1. git fetch
  2. git push origin --delete branchName