如何删除Git中的远程分支?


How do I delete a remote branch in Git?

本问题已经有最佳答案,请猛点这里访问。

我创建了一个分支notmaster来提交和推动一些更改。当我完成了这个分支后,我将更改合并回master,将它们推出,然后删除了本地notmaster

1
2
3
4
$ git branch -a
* master
  remotes/origin/master
  remotes/origin/notmaster

有没有办法删除远程notmaster

更清晰一点,通过Ionut的解决方案:

通常的方法对我来说失败了:

1
2
$ git push origin :notmaster
error: dst refspec notmaster matches more than one.

那是因为我有一个和分支同名的标签。这对我来说是个糟糕的选择,造成了模棱两可的结果。所以在这种情况下:

1
$ git push origin :refs/heads/notmaster


git push origin :notmaster,基本上是"不向notmaster遥控器推任何东西"。


我也有同样的问题。我有一个分支和一个名为3.2的标签。这就是为什么它说有多个匹配:

1
git error: dst refspec 3.2 matches more than one.

以下是删除分支的方法:

1
git push origin :heads/3.2

下面是如何删除标签:

1
git push origin :tags/3.2


1
git push origin --delete notmaster

如果您使用的是Git 1.7.0或更高版本,这将实现此功能。在Git1.7.0之前,您需要使用不太直观(但同样有效)的语法:

1
git push origin :notmaster

较旧的语法在较新版本的Git中仍然有效,但较新的语法似乎更人性化,更容易记忆。如果我想删除一个分支,输入--delete似乎是很自然的事情。

从1.7.0发行说明:

"git push" learned"git push origin --delete branch", a syntactic sugar for"git push origin :branch".


这是因为分支和标记的名称相同。

从远程使用中删除分支

git push origin :refs/heads/branchname

从远程使用中删除标记

git push origin :refs/tags/tagname

要从本地删除,可以使用以下命令。

git branch -d branchname

git tag -d tagname


以下步骤也可以实现这一技巧:

1
2
3
4
$ git fetch --prune --tags
$ git push origin :refs/tags/{same-branch-tag-name}
$ git push origin :{same-branch-tag-name}
$ git push --tags

删除本地分支:

1
2
git branch -d {branch name} //All changes must be committed first.
git branch -D {branch name} //Does not require commit.

删除gitorious分支:

1
2
Delete the local branch first.
git push {gitorious push url} :{branch name}