Гадьте! Приблизительно неделю назад я повторно основывал некоторые фиксации при попытке убрать мой репозиторий, и по-видимому я на самом деле не закончил его. Сегодня, неделя и несколько фиксаций позже, я пошел для перебазирования для переупорядочения нескольких фиксаций с сегодняшнего дня, и она сказала мне, что я уже был посреди переосновы.
Это должно было быть сигналом для копирования моего repo на всякий случай. Но я не сделал... вместо этого, я работал git rebase --abort
который звучавший прямо в то время. Ну, это не было правильно. Это прервало переоснову от неделю назад и сбросило ГОЛОВУ ведущего устройства к старой. Макет!
У меня есть несколько других ответвлений, которые являются довольно недавними, и я несколько раз продвигал к удаленному, но новые изменения, кажется, заканчиваются навсегда. Я не обладаю соответствующим уровнем мерзавца-fu, чтобы знать, существует ли какой-либо способ восстановить мои изменения.
Я завинчен?
РЕДАКТИРОВАНИЕ - НИЧЕГО СЕБЕ!Спасибо, ребята! git reflog
является потрясающим! Я полностью восстанавливаюсь... извлеченный урок. Отмечание ответа Tchalvak, принятого для того, чтобы быть первым для регистрации.
Проверить ] git reflog
. Вы можете вернуться в прошлое, используя эти хэши коммитов в качестве ссылки почти во всех случаях.
Я бы также физически скопировал каталог репозитория git в другое место в качестве места для предварительного тестирования, чтобы увидеть, что будет работать, таким образом вы можете возиться с чем угодно, не теряя неотслеживаемые файлы и не доводя вещи до состояния, в котором вы не может вернуться из.
Вы должны иметь возможность получить 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 », где приведены другие примеры восстановления.