Прерванный старый git rebase и потерянные коммиты с момента запуска rebase - PullRequest
62 голосов
/ 22 апреля 2010

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

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

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

Я ввернут?

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

Ответы [ 2 ]

100 голосов
/ 22 апреля 2010

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

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

64 голосов
/ 22 апреля 2010

Вы должны быть в состоянии получить SHA1 из ваших последних коммитов (которые исчезли после ребазы --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 ", для других примеров восстановления.

...