无法删除无意中创建的远程分支

时间:2010-05-24 09:20:02

标签: git version-control

$ 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,但这不起作用

任何帮助。

5 个答案:

答案 0 :(得分:45)

我有这个错误(来自上面):

  

感谢。其实我注意到了这一点   解决方案并尝试过。但是这个   给出以下错误... $ git push   origin:heads / socail输入密码   键'/h/.ssh/id_rsa':错误:   无法推动不合格   destination:heads / socail   目的地refspec既不匹配   现有的遥控器也没有开始   与refs /,我们无法猜测   基于源ref的前缀。   错误:无法将某些引用推送到   'git@xxxxxx.git' - 2010年5月24日的Himel   9:37

似乎对我是否实际远程删除它感到困惑。我像这样工作:

git push origin HEAD:branch_to_delete

git push origin :branch_to_delete

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

答案 1 :(得分:7)

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

答案 2 :(得分:7)

正如@JoshNathan 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>引用的远程存储库中删除,但仍然在&#34;远程/&#34;中本地可用。

     

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

答案 3 :(得分:2)

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

上存在的分支
$ git branch -d -r origin/social
Deleted remote branch origin/social (was 26f6f61).

删除远程分支:

git push origin  :social

这将自动删除远程跟踪分支,即远程跟踪/来源/社交。

答案 4 :(得分:-3)

here上详细描述了删除远程分支。