我创建了一个分支notmaster
来提交并推送一些更改。当我完成该分支后,我将更改合并回master
,将其推出,然后删除了本地notmaster
。
$ git branch -a
* master
remotes/origin/master
remotes/origin/notmaster
有没有删除远程notmaster
?
通常的方法对我来说失败了:
$ git push origin :notmaster
error: dst refspec notmaster matches more than one.
那是因为我有一个与分支同名的标签。这对我来说是一个糟糕的选择,并引起了歧义。那么在那种情况下:
$ git push origin :refs/heads/notmaster
答案 0 :(得分:54)
git push origin :notmaster
,基本上意味着“不向notmaster遥控器推送”。
答案 1 :(得分:45)
我有同样的问题。我有一个分支和一个名为3.2的标签。 这就是它说不止一场比赛的原因:
git error: dst refspec 3.2 matches more than one.
以下是删除分支的方法:
git push origin :heads/3.2
以下是删除标签的方法:
git push origin :tags/3.2
答案 2 :(得分:15)
git push origin --delete notmaster
如果你正在使用Git 1.7.0或更高版本,这将有所帮助。在Git 1.7.0之前,您需要使用不太直观(但同样有效)的语法:
git push origin :notmaster
较旧的语法仍适用于较新版本的Git,但较新的语法似乎更人性化,更易于记忆。如果我想删除分支,输入--delete
似乎是很自然的事情。
" git push"学习" git push origin --delete branch"," git push origin的语法糖:branch"。
答案 3 :(得分:3)
这是因为分支和标记的名称相同。
从远程使用中删除分支
git push origin :refs/heads/branchname
要从远程使用中删除标记 p>
git push origin :refs/tags/tagname
要从本地删除,您可以使用以下内容。
git branch -d branchname
git tag -d tagname
答案 4 :(得分:0)
删除本地分支:
git branch -d {branch name} //All changes must be committed first.
git branch -D {branch name} //Does not require commit.
删除Gitorious Branch:
Delete the local branch first.
git push {gitorious push url} :{branch name}
答案 5 :(得分:0)
以下步骤也可以解决问题:
$ git fetch --prune --tags
$ git push origin :refs/tags/{same-branch-tag-name}
$ git push origin :{same-branch-tag-name}
$ git push --tags