2013-02-14 72 views
1

几个星期前,我将一个Subversion版本库转换为Git。我留下了一堆我不再需要的分支,但无法删除。更糟糕的是,在试图摆脱svn /任何分支的过程中,我现在发现自己与“origin”分支重复。这是我的分支列表的片段:如何删除git zombie分支?

% git branch -a | egrep 'svn/partial|master' 
* master 
    origin/master 
    origin/origin/master 
    svn/partial 
    remotes/origin/master 
    remotes/origin/origin/master 
    remotes/svn/partial 

我似乎能够删除了svn /部分分支,而不是遥控器/ SVN /部分分支:

% git branch -D svn/partial 
Deleted branch svn/partial (was 373a64c). 
% git branch -D remotes/svn/partial 
error: branch 'remotes/svn/partial' not found. 

如果我的git取,svn/partial被重新创建,并且我得到另一层“origin /”分支:

% git push 
Everything up-to-date 
% git fetch 
From . 
... 
* [new branch]  origin/origin/origin/master -> origin/origin/origin/master 
... 
* [new branch]  svn/partial -> svn/partial 

Yikes!他们乘象符段:

% git br -a | egrep 'svn/partial|master' 
* master 
    origin/master 
    origin/origin/master 
    origin/origin/origin/master 
    svn/partial 
    remotes/origin/master 
    remotes/origin/origin/master 
    remotes/origin/origin/origin/master 
    remotes/svn/partial 

我该如何解决这个问题?

+2

可能的重复[如何在本地和GitHub中删除Git分支?](http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally- github) – 2013-02-14 21:00:23

回答

1

git branch -d <branch>删除本地分支。远程分支不在您的本地仓库中,因此您无法从本地仓库中删除它。

要从远程回购删除它有几个等效命令,规范的一个是:

git push origin :svn/partial 

此说推什么(即一个不存在的分支)到远程分支svn/partial,其中将导致远程分支变成不存在......这是说将其删除:)

的Git的最新版本支持更加友好的语法Git的方法:

git push origin --delete svn/partial 
+5

删除远程分支后,运行'git remote prune origin'也会从本地存储库中删除跟踪的'remotes/origin/*'分支。 – robrich 2013-02-14 23:14:08