Страницы

Поиск по вопросам

понедельник, 24 декабря 2018 г.

Git откатить rebase

Такая ситуация, что вместо merge сделал rebase. Получается изменения коряво слились, как можно откатиться к моему локальному коммиту, до того как был сделан rebase и коммит ?


Ответ

Ищите в рефлоге прошлый HEAD-коммит ветки, которую нужно восстановить к прошлому состоянию:
$ git reflog # это просто пример, у вас будут другие id и строки 91e9b6e HEAD@{0}: rebase finished: returning to refs/heads/master 91e9b6e HEAD@{1}: rebase: checkout @{-1} a26257f HEAD@{2}: checkout: ... 91e9b6e HEAD@{3}: commit: ... ...
Просто ищите коммит с тем сообщением, которое вам нужно. Он будет третьим в списке, если вы больше ничего не делали после ребейза.
На всякий случай сделаем бэкап
git branch backup
Потом восстановим текущую ветку к найденному коммиту. Можно использовать как id, так и указатель HEAD@{номер}
git reset --hard HEAD@{2}
Если всё прошло удачно, можно удалять бэкап
git branch -D backup
Подробнее о git reset --hard: Как вернуться (откатиться) к более раннему коммиту?

Комментариев нет:

Отправить комментарий