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

时间:2012-01-27 22:22:42

标签: git

我创建了一个分支,处理它,将它与基本分支合并,现在想删除它。分支也是在git远程服务器上创建的。

现在当我运行git branch -d分支时,它将其删除并推送它。但我仍然在git远程服务器上看到分支。

我之前在创建此分支时看到了类似的问题,但我无法在远程git服务器上看到它。

我甚至可以从这个分支机构结账。

我在这里遗漏了什么?

3 个答案:

答案 0 :(得分:10)

为了扩展这些答案,每个分支基本上存在于三个地方:

  • 在远程服务器上,例如origin/foo
  • origin/foo的本地副本(通过git fetch更新)
  • 本地分支foo(在git merge origin/foo之后通过git 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将 nothing 推送到远程分支,并将其删除。

如果这令人困惑,请不要担心,git开发人员同意你的看法。较新的版本具有--delete选项,因此git push origin --delete branchnamegit push origin :branchname的功能相同,但其意图更加明确。

答案 1 :(得分:7)

删除遥控器上的分支

git push remote :refs/heads/development

答案 2 :(得分:3)

使用以下arcane命令删除远程分支:

git push origin :newfeature

您可能希望更新索引,因此跟踪分支也会被删除:

git fetch origin --prune