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

问题描述 投票:89回答:9

我跑了git branch -a

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

我想删除我的远程分支

我试过了

git push origin --delete remotes/origin/test

我有

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

它怎么不存在?

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

我错过了什么吗?

git
9个回答
152
投票

命令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


130
投票

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

git push origin --delete test

21
投票

删除原点中的分支有一个快捷方式:

git push origin :<branch_name>

这与做git push origin --delete <branch_name>相同


10
投票

git push origin --delete yourBranch


9
投票
  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

1
投票

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

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

在这样做之前,请务必了解运行此操作的含义!


1
投票

鉴于远程分支是远程分支/原点/测试,您可以使用两种方式:

git push origin --delete test

git branch -D -r origin/test

0
投票

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

错误error: unable to delete 'remotes/origin/test': remote ref does not exist表示您的遥控器中没有该名称的分支,但该分支存在于您的本地。


-2
投票
git push origin --delete origin/test 

也应该工作

© www.soinside.com 2019 - 2024. All rights reserved.