> Как откатывать изменения в Git
Уровень: senior · Категория: Технические вопросы
Компании: Aston
> Пример ответа
Откат изменений в Git зависит от того, на каком этапе вы находитесь. Вот основные сценарии:
-
Если изменения ещё не добавлены в индекс (не выполнена команда
git add):
Используйтеgit checkout -- <файл>илиgit restore <файл>(в новых версиях Git). Это отменит изменения в рабочей директории, вернув файл к состоянию последнего коммита. -
Если изменения уже добавлены в индекс (выполнен
git add):
Сначала снимите их с индекса:git reset HEAD <файл>илиgit restore --staged <файл>. Затем, если нужно, откатите рабочую директорию командойgit checkout -- <файл>. -
Если вы уже сделали коммит, но он не был отправлен в удалённый репозиторий:
git reset --soft HEAD~1- откатывает коммит, но оставляет изменения в индексе (готовыми к новому коммиту).git reset --mixed HEAD~1(по умолчанию) - откатывает коммит и снимает изменения с индекса, но оставляет их в рабочей директории.git reset --hard HEAD~1- полностью удаляет коммит и все изменения (осторожно: данные теряются).
-
Если коммит уже отправлен в удалённый репозиторий (например, на GitHub):
Используйтеgit revert <хеш_коммита>. Эта команда создаёт новый коммит, который отменяет изменения указанного коммита. Это безопасно для совместной работы, так как не переписывает историю. -
Для отката к определённому коммиту (без удаления промежуточных):
git revert HEAD~3..HEAD- отменит последние три коммита, создав для каждого новый коммит отмены.
Важно: Избегайте git reset --hard и git push --force в общих ветках, чтобы не сломать историю для коллег. Для локальных экспериментов reset удобен, для публичных веток - только revert.
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью