Как отменить изменения в Git — restore, reset и revert?
- Как откатить коммит в 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 восстановить коммиты невозможно
Разбор темы
- Git — ветки, коммиты и отмена изменений
Как работать в ветке от первого коммита до push, чем merge отличается от rebase, как отменять изменения и разрешать конфликты.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.