Анонимное ответвление после выполнения мерзавца сбрасывается

Фон: 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 совместно использовало проект с другими людьми. Какова была бы альтернатива, чтобы сделать то же (или подобная вещь), не делая жесткой перезагрузки?

6
задан dreftymac 11 August 2016 в 20:26
поделиться

2 ответа

Как упоминалось в Иллюстрированное руководство по восстановлению потерянных коммитов с помощью Git , вы можете восстановить «потерянные» коммиты (например, «больше не упоминается веткой или тегом»).
Вот почему они до сих пор появляются в gitk.
Например, a:

$ git fsck −−lost-found

также отобразит их.

Чтобы очистить это (при условии, что у вас нет ничего для возврата из любых других операций удаления)

 $ git gc --aggressive
 $ git prune

См. Также git gc: очистка после себя .


Если бы эта ветвь была совместно используемой, возможной альтернативой было бы git revert , чтобы сделать новую фиксацию отменой n предыдущих.

4
ответ дан 17 December 2019 в 00:07
поделиться

Вы можете создать новую ветку с помощью фиксации.

Если ваша последняя фиксация в анонимной ветке - 123e43, вы можете сделать:

git checkout -b my_branch 123e43e

Теперь ваша ветка не анонимна. Вы можете объединить или переустановить его в своей основной ветке

3
ответ дан 17 December 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: