Фон: Trevor работал над тестовым проектом только в целях испытания мерзавца. Это - локальный репозиторий с одним человеком, который не был совместно использован так, Trevor сделал сброс трудно для стирания некоторых нежелательных фиксаций:
:git reset --hard 6aa32cfecf4
HEAD is now at 6aa32cf auto commit Sun Feb 28 16:00:10 -0800 2010
Затем Trevor продвинулся, счастливо добавив новые фиксации к проекту. Затем когда Trevor посмотрел на графическое представление истории фиксации, Trevor обнаружил, что, кажется, существует анонимное ответвление стертых фиксаций. Это не обнаруживается как ответвление с помощью ответвления мерзавца, но это действительно обнаруживается в GUI.
Вопросы 1: Как Trevor может избавиться от этого "анонимного ответвления"... и на что действительно смотрит Trevor? Что является некоторыми указателями, чтобы помочь Trevor понять то, что произошло, когда Trevor сделал жесткую перезагрузку, таким образом, Trevor может лучше установить ожидания Trevor.
Вопросы 2: Принятие Trevor совместно использовало проект с другими людьми. Какова была бы альтернатива, чтобы сделать то же (или подобная вещь), не делая жесткой перезагрузки?
Как упоминалось в Иллюстрированное руководство по восстановлению потерянных коммитов с помощью Git , вы можете восстановить «потерянные» коммиты (например, «больше не упоминается веткой или тегом»).
Вот почему они до сих пор появляются в gitk.
Например, a:
$ git fsck −−lost-found
также отобразит их.
Чтобы очистить это (при условии, что у вас нет ничего для возврата из любых других операций удаления)
$ git gc --aggressive
$ git prune
См. Также git gc: очистка после себя .
Если бы эта ветвь была совместно используемой, возможной альтернативой было бы git revert
, чтобы сделать новую фиксацию отменой n предыдущих.
Вы можете создать новую ветку с помощью фиксации.
Если ваша последняя фиксация в анонимной ветке - 123e43, вы можете сделать:
git checkout -b my_branch 123e43e
Теперь ваша ветка не анонимна. Вы можете объединить или переустановить его в своей основной ветке