【问题标题】:Cannot delete a remote branch created unintentionally无法删除无意创建的远程分支
【发布时间】:2011-02-23 03:58:48
【问题描述】:
$ git branch -a
* SocialAct
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/SocialAct
  remotes/origin/social

我想删除远程分支“remotes/origin/social”,并应用以下命令:

$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

但是我不知道如何远程进行这些更改,以便从源中删除分支并且每个人都可以看到更改。我尝试了 git push 但这不起作用

任何帮助。

【问题讨论】:

    标签: git version-control


    【解决方案1】:

    我有这个错误(从上面):

    谢谢。其实我注意到了这一点 解决方案并较早尝试。但是这个 给出以下错误... $ git push origin :heads/socail 输入密码 对于键“/h/.ssh/id_rsa”:错误: 无法推到不合格 目的地:海头/社会 目标 refspec 既不匹配 遥控器上的现有参考也不开始 使用 refs/,我们无法猜测 基于源引用的前缀。 错误:未能将一些参考推送到 'git@xxxxxx.git' – Himel 2010 年 5 月 24 日在 9:37

    它似乎对我是否真的远程删除了它感到困惑。我像这样解决它:

    git push origin HEAD:branch_to_delete
    
    git push origin :branch_to_delete
    

    这对我有用。使用:git 版本 1.7.3.1.msysgit.0.

    【讨论】:

    • 分支好像已经被删除了。 git pull 不会删除远程删除的分支,你必须使用 prune: git remote prune origin - stay-calm.blogspot.com/2009/02/…
    • 我上面的评论应该是这里评分最高的答案。 Nathan 的方法当然有效,但它隐藏了真正的错误。
    【解决方案2】:

    正如@Josh 在对Nathan McDaniel's Answer 的评论中提到的,这可能是由于远程存储库中不再存在该分支。这会导致git branch -a 仍显示origin 下的分支(或您碰巧命名此特定远程的任何名称),但删除远程存储库上的分支是不可能的,因为它不再存在于远程。这可能是由于从另一台计算机上删除远程分支造成的(除此之外,git pullgit fetch 不会删除对已从远程存储库中删除的远程分支的引用)。

    修复

    只需使用git remote prune 删除所有已从远程存储库中删除的远程跟踪分支:

    git remote prune REMOTENAME
    

    例如,如果您的遥控器名称是origin(可能),上述命令将如下所示:

    git remote prune origin
    

    来自git提供的文档:

    git remote prune [-n | --dry-run] <name>

    删除<name> 下所有过时的远程跟踪分支。这些陈旧的分支已从<name> 引用的远程存储库中删除,但仍可在本地“remotes/”中使用。

    使用--dry-run 选项,报告将修剪哪些分支,但实际上并不修剪它们。

    【讨论】:

      【解决方案3】:

      git push origin :social
      但是您也需要在本地删除之前或之后。

      【讨论】:

      • 谢谢。实际上我注意到了这个解决方案并早点尝试过。但这会产生以下错误... $ git push origin :heads/socail Enter passphrase for key '/h/.ssh/id_rsa': error: unable to push to unqualified destination: head/socail 目标 refspec 既不匹配现有 ref在遥控器上,也不是以 refs/ 开头,我们无法根据源 ref 猜测前缀。错误:未能将一些引用推送到 'git@xxxxxx.git'
      • 我先在本地删除了,命令:$ git branch -d -r origin/social 或者,我做错了吗?
      • 无论您是否在本地删除都没有关系,您是否注意到您的最后一个示例有一个拼写错误 socail/social ?
      • 对,有错别字,其实是我写在这里的。但在实际控制台中,我正确应用了它。
      • 上次我不得不这样做是完全一样的,无论如何,错误消息看起来分支不再存在,您是否尝试过克隆 repo 并查看是否分行还在吗?
      【解决方案4】:

      以下命令将删除远程跟踪分支,但不会删除远程存在的分支

      $ git branch -d -r origin/social
      Deleted remote branch origin/social (was 26f6f61).
      

      删除远程分支:

      git push origin  :social
      

      这将自动删除远程跟踪分支,即 remotes/origin/social。

      【讨论】:

        【解决方案5】:

        删除远程分支在here中有详细介绍。

        【讨论】:

          猜你喜欢
          • 2013-01-07
          • 2015-09-26
          • 2012-08-25
          • 1970-01-01
          • 2011-06-29
          • 2016-07-08
          • 2020-09-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多