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

时间:2016-03-11 13:31:10

标签: git

我跑了git branch -a

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

我想删除我的远程分支

我已经尝试了

git push origin --delete remotes/origin/test

我得到了

  

错误:无法删除'遥控器/原点/测试':远程参考没有   存在

它怎么不存在?

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

我错过了什么吗?

13 个答案:

答案 0 :(得分:155)

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

答案 1 :(得分:130)

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

git push origin --delete test

答案 2 :(得分:21)

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

git push origin :<branch_name>

与执行git push origin --delete <branch_name>

相同

答案 3 :(得分:10)

git push origin --delete yourBranch

答案 4 :(得分:9)

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

答案 5 :(得分:1)

一个方便的单行删除除了&#39; master&#39;之外的分支。来自原产地:

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

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

答案 6 :(得分:1)

鉴于远程分支是远程分支/ origin / test,您可以使用两种方式:

git push origin --delete test

git branch -D -r origin/test

答案 7 :(得分:1)

这应该有帮助:

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

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

对我来说,这行得通$▶git branch -D -r origin / mybranch

详细信息

$▶git branch -a | grep mybranch   遥控器/起源/ mybranch

$▶git branch -r | grep mybranch   起源/ mybranch

$▶git分支   开发 *功能/预部署

$▶git push origin-删除mybranch 错误:无法删除“ mybranch”:远程引用不存在 错误:无法将一些引用推送到'git@10.102.100.38:config / myrepo.git'

$▶git branch -D -r origin / mybranch 删除了远程分支的起源/分支(是62c7421)。

$▶git branch -a | grep mybranch

$▶git branch -r | grep mybranch

答案 10 :(得分:0)

我在解决方案之后是poke,最后做了一些小的调整。我的步骤如下
-git fetch --prune
-git branch -a打印以下内容
master
branch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/branch(要删除的远程分支)
-git push origin --delete branch
在这里,要删除的分支未命名为remotes/origin/branch,而只是命名为branch。并且分支被删除。

答案 11 :(得分:0)

对于windows

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

答案 12 :(得分:-2)

git push origin --delete origin/test 

也应该有用