【问题标题】:How do I delete a remote branch in Git? [duplicate]如何在 Git 中删除远程分支? [复制]
【发布时间】:2011-05-08 18:42:33
【问题描述】:

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

$ git branch -a
* master
  remotes/origin/master
  remotes/origin/notmaster

有没有办法删除远程notmaster


更清晰一点,solution from Ionut:

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

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

那是因为我有一个与分支同名的标签。这对我来说是一个糟糕的选择,并引起了歧义。所以在那种情况下:

$ git push origin :refs/heads/notmaster

【问题讨论】:

  • 我爱你!几个小时以来,我一直在努力解决同样的问题!这就是我喜欢 StackOverflow +1 的原因!!!

标签: git


【解决方案1】:

git push origin :notmaster,基本意思是“不向非主控遥控器推送任何内容”。

【讨论】:

  • 错误:dst refspec notmaster 匹配多个。
  • 这是第一次。我以前没见过这个错误。
  • 啊,你的第二个建议奏效了!我有一个标签与该分支(notmaster)具有相同的标签。这会导致错误吗?
  • 哦,是的,这就是原因。我相信您可以使用git push origin :refs/heads/notmaster 将其删除。不过不确定。
  • @chrisaycock:事实上,您需要按照 Ionut 的建议(消除对 refs/heads/notmaster 的歧义),因为使用 git branch -d -r 命令,您只需删除了本地远程跟踪分支,而不是远程上的实际分支。如果您不在遥控器上删除它,它只会在您下次获取时显示。
【解决方案2】:

我有同样的问题。我有一个分支和一个名为 3.2 的标签。 这就是为什么它说有不止一场比赛:

git error: dst refspec 3.2 matches more than one.

删除分支的方法如下:

git push origin :heads/3.2

以下是删除标签的方法:

git push origin :tags/3.2 

【讨论】:

    【解决方案3】:
    git push origin --delete notmaster
    

    如果您使用的是 Git 1.7.0 或更高版本,则可以解决问题。在 Git 1.7.0 之前,您需要使用不太直观(但同样有效)的语法:

    git push origin :notmaster
    

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

    来自1.7.0 release notes

    “git push”学习了“git push origin --delete branch”,这是“git push origin:branch”的语法糖。

    【讨论】:

      【解决方案4】:

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

      从远程使用中删除分支

      git push origin :refs/heads/branchname

      从远程使用中删除标签

      git push origin :refs/tags/tagname

      要从本地删除,您可以使用以下内容。

      git branch -d branchname

      git tag -d tagname

      【讨论】:

        【解决方案5】:

        删除本地分支:

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

        删除 Gitorious 分支:

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

        【讨论】:

        • 您的两个答案中的第二个是 OP 正在寻找的,尽管它绝不是特定于 gitorious 的,而且您不需要 URL - 只是 OP 提供的远程名称。 git push origin :notmaster,或者在这种情况下,git push origin :refs/heads/notmaster 会是一个更清晰的答案。
        【解决方案6】:

        以下步骤也可以解决问题:

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

        【讨论】:

          猜你喜欢
          • 2013-09-22
          • 1970-01-01
          • 2020-02-13
          • 2011-07-22
          • 2016-01-09
          • 2020-04-12
          • 2013-07-06
          • 2020-11-18
          • 2011-01-01
          相关资源
          最近更新 更多