Задать вопрос
@ynashyvan

Как отменить два последних комита без потери локальных изменений?

Предистория:
был commit_1, он был запушен на github
был commit_2, он не был запушен на github, так как была ошибка, что файл большого размера
был commit_3, в нем я удалил данный файл через git rm dump.sql, сделал пуш на гитхаб, но он не прошел, из-за того что commit_2 еще помнит данный файл

Как можно отменить два последних комита без потери локальных изменений?
  • Вопрос задан
  • 463 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Очень просто. Вот один из способов.
git reset --soft HEAD~2 # отменить два последних коммита
# с опцией --soft состояние проекта в рабочем каталоге не изменится и ничего не потеряешь
# и все локальные изменения после первого коммита автоматически поместятся в индекс
git commit # создать коммит заново.


В следующий раз вместо того, чтобы создавать дополнительный исправляющий коммит, просто пересоздавай предыдущий «плохой» коммит с помощью команды git commit --amend
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно ещё просто объединить эти комиты через rebase:
git rebase -i HEAD~2

И пометить один из комитов на squash.
В данном случае это ничем не лучше чем reset --soft, просто более гибкий инструмент.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы