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

kyo*_*kyo 109 git

我跑了 git branch -a

* master
  remotes/origin/test
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

我想删除我的远程分支

我试过了

git push origin --delete remotes/origin/test
Run Code Online (Sandbox Code Playgroud)

我有

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

它怎么不存在?

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

我错过了什么吗?

pok*_*oke 192

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

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

但是,默认情况下,git fetch不会删除不再具有远程对应分支的远程分支.为此,您明确需要修剪远程分支列表:

git fetch --prune
Run Code Online (Sandbox Code Playgroud)

这将自动摆脱远程不再存在的远程分支.之后,git branch -r将显示遥控器上真正存在的分支的更新列表:以及可以使用的分支git push.

话虽这么说,为了使用git push --delete,您需要在远程存储库中指定分支的名称; 不是远程分支的名称.因此,要删除分支test(由远程分支表示origin/test),您将使用git push origin --delete test.

  • 这个答案非常有用.它涵盖了与问题相关的许多概念,并提供了实用的建议. (7认同)
  • 因此,从 git 收到此消息有两个原因:要么该分支已在服务器上删除,要么您错误地在分支名称前加上了“remotes/origin/”。或两者。 (2认同)

dro*_*sam 133

意思remotes/origin/test是您test在远程服务器中调用了一个分支origin.所以命令就是

git push origin --delete test
Run Code Online (Sandbox Code Playgroud)


Ric*_*ães 22

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

git push origin :<branch_name>

这跟做的一样 git push origin --delete <branch_name>


Yan*_*ang 14

我按照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。并且分支被删除。

  • +1评论回复:分支名称,我试图删除“origin/branch”,而它应该只是“branch”。 (4认同)

小智 11

git push origin --delete yourBranch


Mov*_*GP0 10

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

  • 不,这会产生相同的错误:“远程引用不存在” (2认同)

小智 7

快速回答

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

git fetch --prune
Run Code Online (Sandbox Code Playgroud)

验证运行

git branch -r
Run Code Online (Sandbox Code Playgroud)

您应该看到一个仅包含现有远程存储库的新列表


Sym*_*tes 5

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

git push origin --delete test
Run Code Online (Sandbox Code Playgroud)

git branch -D -r origin/test
Run Code Online (Sandbox Code Playgroud)