Страницы

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

среда, 5 февраля 2020 г.

Как отменить откат изменений (восстановить потерянный коммит)?

#git #git_revert #git_reset #git_checkout


Вопрос: Есть ли способ в git отменить откат, т.е восстановить состояние, не закоммиченное
в git`е ?

Около месяца назад я создал коммит и сегодня я создал коммит( как я думал ), но коммит,
как оказалось позже, не создался( моя вина ). Затем, спустя час, я решил произвести
откат к последнему коммиту, но так как сегодня во время его создания произошла ошибка,
я откатился к коммиту месячной давности. 
    


Ответы

Ответ 1



Все что попадает в репозиторий не удаляется сразу, т.е. если даже ты удалил ветку, изменил коммит и т.д. есть возможность вернуться к предыдущей версии. Если же изменения были только в рабочей копии, а потом они "потерялись", то тут уж ничем не поможешь :(. Ты можешь посмотреть в логе git reflog историю изменения HEAD,еще можно перечислить все недостижимые объекты git fsck --unreachable. Может это поможет. Если ты добавлял файлы в индекс, но не закомитил их то по выводу git fsck --unreachable можно будет найти эти файлы. Содержимое файлов хранится в blob объектах. В объектах типа tree хранятся коллекции blob объектов. Увы не знаю создается ли tree объект при добавлении файлов в индекс, но если создается то все что нужно это найти недостижимый tree объект с нужными файлами. Для отображения содержимого объекта: git cat-file -p

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

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