Ответ вслух Middle Git обновлено

Как исправлять ошибки в Git

Вопрос

Как ты отменишь изменения в Git в разных ситуациях: правки ещё не закоммичены, коммит только локальный, коммит уже в общей ветке?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Зависит от того, где изменения. Если они не закоммичены, git restore файл вернёт файл к индексу, а git restore --staged уберёт его из индекса; если правки жалко, сначала git stash.

Что должно прозвучать в ответе

  • незакоммиченные правки: git restore (или restore --staged для индекса), stash если нужно сохранить

  • локальный коммит: reset --soft / --mixed / --hard в зависимости от того, что сохранить

  • коммит в общей ветке: git revert, без переписывания истории

  • commit --amend для последнего локального коммита

  • reflog спасает после reset --hard и неудачного rebase

  • секрет в истории не удаляется новым коммитом: нужна ротация ключа

Что могут спросить следом

  • Чем reset --mixed отличается от --soft?
  • Как отменить merge-коммит через revert?
  • Что делать, если запушил .env с ключами?

Разбор

Зависит от того, где изменения. Если они не закоммичены, git restore файл вернёт файл к индексу, а git restore --staged уберёт его из индекса; если правки жалко, сначала git stash.

Если коммит только у меня локально, могу переписать историю: git commit --amend для последнего коммита или git reset. --soft оставит изменения в индексе, --mixed в файлах, --hard выбросит их совсем.

Если коммит уже в общей ветке, переписывать нельзя, поэтому git revert <hash>: новый коммит, отменяющий старый. Для merge-коммита нужен -m 1, чтобы указать основную линию.

Если ошибся с reset или rebase, выручит git reflog: там видно прежнее положение HEAD. И отдельно: если в историю попал секрет, удаление файла новым коммитом не помогает, ключ нужно перевыпустить, а историю чистить специальными инструментами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.