Прерванная старая git перезагрузка и потерянные коммиты с момента начала перезагрузки
Дерьмо! Примерно неделю назад, я пытался перезагрузить некоторые коммиты, пытаясь очистить свой репозиторий, и, видимо, на самом деле я его не закончил. Сегодня, через неделю и несколько коммитов позже, я пошел на перезагрузку, чтобы переупорядочить несколько коммитов с сегодняшнего дня, и он сказал мне, что я уже был в середине перестановки.
Это должно было быть репликой, чтобы скопировать мое репо на всякий случай. Но я не... вместо этого я побежал git rebase --abort
, который звучал прямо в то время. Ну, это было неправильно. Он прервал перестановку с недели назад и reset master HEAD на старую. Пустышки!
У меня есть несколько других ветвей, которые довольно недавно, и я несколько раз удалялся в удаленный доступ, но самые последние изменения, похоже, ушли навсегда. Я не обладаю соответствующим уровнем git -fu, чтобы узнать, есть ли способ восстановить мои изменения.
Я привинчен?
ИЗМЕНИТЬ - WOW! Спасибо, парни! git reflog
Удивительно! Я полностью выздоровел... извлеченный урок. Отметка Тхалвака отвечает за то, что она была первой для публикации.
Ответы
Ответ 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" для других примеров восстановления.