如何删除git zombie分支?

时间:2013-02-14 20:55:04

标签: git branch

几周前我将Subversion存储库转换为Git。我留下了一堆我不再需要的分支,但无法删除。更糟糕的是,在试图摆脱svn /无论分支的过程中,我现在发现自己的分支与“起源”重复。这是我的分支列表的一个片段:

% 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 / partial分支,但不能删除remotes / svn / partial分支:

% 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-fetch,重新创建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

糟糕!它们像tribbles一样倍增:

% 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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

要从远程仓库中删除它,有一些等效的命令,规范的命令是:

git push origin :svn/partial

这就是说什么都不推(即一个不存在的分支)到远程分支svn/partial,这会导致远程分支变得不存在......这就是Git说删除它的方式:)

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

git push origin --delete svn/partial
相关问题