2013-02-14 69 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