从远程git服务器中删除开发分支

6
我创建了一个分支,对其进行了操作,并将其与基本分支合并,现在想要删除它。该分支也在git远程服务器上创建。
现在当我运行git branch -d branch时,它已被删除并且我已经推送了它。但是我仍然可以在git远程服务器上看到该分支。
我之前遇到过类似的问题,当我创建这个分支时,我无法在远程git服务器上看到它。
我甚至能够从这个分支中检出。
我是否漏掉了什么?
3个回答

10

为了详细说明这些答案,每个分支基本上存在于三个地方:

  • 在远程服务器上,例如 origin/foo
  • 您的本地副本 origin/foo(通过 git fetch 更新)
  • 本地分支 foo(通过 git merge origin/foogit fetch 后更新 - 或更常见的是,两者一起通过 git pull 完成)。

git branch -d 删除这三个中的最后一个,即本地分支。 git branch -d -r 将删除您的副本的远程分支(或在删除本地分支后可以运行git remote prune origin)。

但是,要删除远程服务器上的分支,必须使用 git push。这种旧语法是git push origin :branchname。这是因为语法是localref:remoteref,例如可以将您机器上的本地分支推送到具有不同名称的远程分支上,例如 git push origin localbranch:remotebranch。如果您留空了 localbranch 部分,那么您就是告诉 git 推送空内容到远程分支,从而删除它。

如果这很令人困惑,不要担心,git 开发人员也同意。更新版本具有--delete选项,因此 git push origin --delete branchnamegit push origin :branchname执行相同的操作,但其意图更加清晰。


8

删除远程分支

git push remote :refs/heads/development

3
或者等价于:git push remote :development - Koraktor
@Koraktor,没错,除非该引用在其他地方。 - Michael Krelin - hacker

3
您可以使用以下神秘命令删除远程分支:
git push origin :newfeature

您可能需要更新索引,以便跟踪分支也被删除:
git fetch origin --prune

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接