Подтвердить что ты не робот

Прерванная старая git перезагрузка и потерянные коммиты с момента начала перезагрузки

Дерьмо! Примерно неделю назад, я пытался перезагрузить некоторые коммиты, пытаясь очистить свой репозиторий, и, видимо, на самом деле я его не закончил. Сегодня, через неделю и несколько коммитов позже, я пошел на перезагрузку, чтобы переупорядочить несколько коммитов с сегодняшнего дня, и он сказал мне, что я уже был в середине перестановки.

Это должно было быть репликой, чтобы скопировать мое репо на всякий случай. Но я не... вместо этого я побежал git rebase --abort, который звучал прямо в то время. Ну, это было неправильно. Он прервал перестановку с недели назад и reset master HEAD на старую. Пустышки!

У меня есть несколько других ветвей, которые довольно недавно, и я несколько раз удалялся в удаленный доступ, но самые последние изменения, похоже, ушли навсегда. Я не обладаю соответствующим уровнем git -fu, чтобы узнать, есть ли способ восстановить мои изменения.

Я привинчен?

ИЗМЕНИТЬ - WOW! Спасибо, парни! git reflog Удивительно! Я полностью выздоровел... извлеченный урок. Отметка Тхалвака отвечает за то, что она была первой для публикации.

4b9b3361

Ответ 1

Проверьте git reflog. Вы можете вернуться назад во времени, используя эти хэши-коммиты в качестве ссылки почти во всех случаях.

Я также физически скопировал каталог git repo в другом месте как место для предварительного тестирования, чтобы увидеть, что будет работать, таким образом, вы можете общаться с тем, что хотите, не теряя неиспользуемых файлов или получать вещи в состояние, в котором вы не может вернуться.

Ответ 2

Вы должны иметь возможность получить SHA1 из ваших последних коммитов (которые исчезли после rebase -bort) с git reflog.

Затем вы сможете reset использовать текущую ветвь для этих SHA1

# Suppose the old commit was [email protected]{2} in the ref log
git reset --hard [email protected]{2}

Это немного похоже на Отмена git reset --hard HEAD~1.

См. также " иллюстрированное руководство по восстановлению потерянных коммитов с помощью Git" для других примеров восстановления.