Воссоздать репозиторий Git из нескольких веток

У меня есть репозиторий Git, который ведет себя забавно.

Я могу checkout все свои branch, я могу нормально работать с каждым из них, и я могу выполнять gitk с каждым и успешно просматривать их отдельные commit, за одним исключением...

.... есть один branch, к которому я не могу получить доступ. При попытке выполнить любое действие, включающее ошибочный branch, я получаю сообщение об ошибке.

Например: gitk --all дает fatal: blah blah blah (как примечание, более подробную информацию об ошибке можно посмотреть здесь, но я пытаюсь прийти к решению с совершенно другой стороны).

Вопрос

Есть ли способ рекомбинировать все остальные рабочие branches вместе, чтобы я мог снова использовать это хранилище, только теряя commits из сломанного branch, поскольку сломанный branch не имеет других branches, простирающихся от него?


person ServAce85    schedule 02.03.2012    source источник
comment
Никто не сможет вам помочь, если вы дадите нам сообщение об ошибке бла-бла-бла   -  person Ana Betts    schedule 02.03.2012
comment
@PaulBets Я полностью понимаю, но это не очень важно в вопросе. Однако, если вы или кто-то другой считает, что это может быть актуально, я дал ссылку на вопрос, который содержит гораздо больше информации об этом. Этот вопрос больше касается объединения git branches в одно репо.   -  person ServAce85    schedule 02.03.2012
comment
Вы просто спрашиваете, как удалить вашу поврежденную ветку?   -  person Ana Betts    schedule 02.03.2012
comment
@PaulBets Не совсем так. Я пробовал это, но ошибка не позволяет мне это сделать. Я спрашиваю, есть ли способ создать новое репо и заполнить его GoodBranchA, затем добавить GoodBranchB и т. д., реконструируя исходное репо, но без добавления ветки BadBranch.   -  person ServAce85    schedule 02.03.2012
comment
А, понятно - просто зайдите в .git и удалите refs/heads/BadBranch   -  person Ana Betts    schedule 02.03.2012


Ответы (1)


Вы можете создать удаленный сервер и перенести все свои «хорошие» ветки на этот remote. Затем в новом локальном каталоге выполните git clone из этого remote.

После этого, если вы выполните git branch -a, вы должны увидеть все свои локальные и удаленные ветки. Вы можете создать локальную ветку отслеживания для каждой удаленной ветки с помощью:

    git checkout -b branch remote/branch

После этого у вас должно быть локальное репо со всеми «хорошими» ветками.

person triad    schedule 02.03.2012