2012-01-27 212 views
5

我创建了一个分支,对它进行了处理,将其与基本分支合并,现在想删除它。该分支也是在git远程服务器上创建的。git从远程git服务器中删除开发分支

现在,当我运行git branch -d分支时,它将它移除,然后我将它推开。但我仍然看到git远程服务器上的分支。

当我创建这个分支时,我看到类似的问题,并且我无法在远程git服务器上看到它。

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

我在这里错过了什么吗?

回答

7

要删除的远程

git push remote :refs/heads/development 
+3

或等效:'git push remote:development' – Koraktor 2012-01-27 22:25:29

+0

@Koraktor,是的,除非ref是别处,否则会这样做。 – 2012-01-27 22:26:33

3

分支,可以用下面的神秘的命令删除远程分支:

git push origin :newfeature 

您可能需要更新索引,所以跟踪分支被作为去除好:

git fetch origin --prune 
9

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

  • 在远程服务器上,例如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将任何东西都推送到远程分支,将其删除。

如果这很混乱,不要担心,git开发人员会同意你的意见。较新的版本有--delete选项,因此git push origin --delete branchname的功能与git push origin :branchname的功能相同,但其目的更加清晰。