@ynashyvan

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

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

Как можно отменить два последних комита без потери локальных изменений?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 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, просто более гибкий инструмент.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы