Вопрос с собеседования · DevOps

Как отменить изменения в Git — restore, reset и revert?

JuniorCI/CD и Git
Ещё спрашивают так:
  • Как откатить коммит в Git?
  • Чем git reset отличается от git revert?
Коротко

git restore файл — отменить незакоммиченные изменения в рабочей копии; git restore --staged файл — убрать из индекса. git reset двигает ветку на другой коммит: --soft оставляет изменения в индексе, --mixed (по умолчанию) — в рабочей копии, --hard — удаляет их. git revert коммит создаёт новый коммит, отменяющий изменения, — история не переписывается, поэтому это способ отмены для опубликованных коммитов.

  • reset — для локальных коммитов, revert — для опубликованных
  • git commit --amend — поправить последний коммит, пока он не опубликован
  • git reflog помнит, куда указывала ветка, — спасает после неудачного reset

А ещё --hard без раздумий — самый частый способ потерять работу

Подробно

Ситуации:

  • испортил файл, не коммитил — git restore file.py;
  • добавил лишнее в индекс — git restore --staged file.py;
  • последний локальный коммит неудачный — git reset --soft HEAD~1, поправить, закоммитить заново;
  • коммит уже в main и сломал прод — git revert <хеш>, push;
  • потерял коммиты после reset — git reflog, git reset --hard <хеш из reflog>.

Что хотят услышать

  • restore для рабочей копии и индекса.
  • reset с режимами для локального.
  • revert для опубликованного.
  • reflog как страховка.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Опубликованный коммит в main отменяют через git reset --hard и force push
  • ✓restore — незакоммиченное, reset — локальные коммиты, revert — отмена опубликованного новым коммитом
  • ✗git revert удаляет коммит из истории
  • ✗После reset --hard восстановить коммиты невозможно

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования