Прерванный старый мерзавец повторно базируется и потерянные фиксации начиная с запущенной переосновы

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

Это должно было быть сигналом для копирования моего repo на всякий случай. Но я не сделал... вместо этого, я работал git rebase --abort который звучавший прямо в то время. Ну, это не было правильно. Это прервало переоснову от неделю назад и сбросило ГОЛОВУ ведущего устройства к старой. Макет!

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

Я завинчен?

РЕДАКТИРОВАНИЕ - НИЧЕГО СЕБЕ!Спасибо, ребята! git reflog является потрясающим! Я полностью восстанавливаюсь... извлеченный урок. Отмечание ответа Tchalvak, принятого для того, чтобы быть первым для регистрации.

65
задан Dan Breen 22 April 2010 в 19:13
поделиться

2 ответа

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

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

104
ответ дан 24 November 2019 в 15:16
поделиться

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

Затем вы сможете сбросить текущую ветку на эти SHA1

# Suppose the old commit was HEAD@{2} in the ref log
git reset --hard HEAD@{2}

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

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

67
ответ дан 24 November 2019 в 15:16
поделиться
Другие вопросы по тегам:

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