#git #git_rebase
This question already has an answer here: Как вернуться (откатиться) к более раннему коммиту? (1 ответ) Закрыт 6 месяцев назад. Такая ситуация, что вместо merge сделал rebase. Получается изменения коряво слились, как можно откатиться к моему локальному коммиту, до того как был сделан rebase и коммит ?
Ответы
Ответ 1
Ищите в рефлоге прошлый 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: Как вернуться (откатиться) к более раннему коммиту?Ответ 2
В дополнение к ответу выше. Чтобы не использовать git-reflog и не копировать хэши, поможет команда с откатом по времени, например: git reset --hard master@{"10 minutes ago"} или git reset --hard master@{12:30} также должны поддерживаться такие варианты: {yesterday}, {1 month 2 weeks 3 days 1 hour 1 second ago}, {1979-02-26 18:30:00} Если Вы примерно знаете, когда совершили лишнее действие, то можете откатиться с помощью данной команды.
Комментариев нет:
Отправить комментарий