2013-02-14 4 views
1

Я преобразовал репозиторий Subversion в Git пару недель назад. Я остался с кучей ветвей, которые мне больше не нужны, но не могу удалить. Что еще хуже, в процессе попытки избавиться от ветвей svn/any, я теперь нахожусь с ветвями с «происхождением», дублированными. Вот фрагмент из моего списка филиала:Как удалить ветки 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 

я появляюсь, чтобы иметь возможность удалить СВН/частичную ветвь, но не перепятнышки/СВН/частичное отделение:

% 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 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

возможных дубликатов [Как удалить ветвь Git как локально, так и в GitHub?] (Http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally- and-in-github) –

ответ

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

Смежные вопросы