Что такое git reset и какие есть режимы reset (hard, soft)
Что проверяют
Понимаете ли вы, что Git хранит три состояния одновременно, и умеете ли объяснить команду через них. Сброс это первый инструмент, которым новичок разрушает свою работу, поэтому интервьюер заодно смотрит на аккуратность: во фронтенде ветка часто общая с другими разработчиками, а незакоммиченные правки в ней живут долго.
Как отвечать
Три состояния это последний коммит ветки, индекс и рабочий каталог. git reset двигает указатель ветки на выбранный коммит, а режим решает, что произойдёт с остальными двумя.
git reset --soft HEAD~1 # только указатель, правки остаются в индексе
git reset HEAD~1 # режим mixed по умолчанию: правки остаются в файлах
git reset --hard HEAD~1 # все три состояния, незакоммиченное теряетсяМягкий режим это рабочий инструмент фронтендера: перед отправкой ветки на ревью десяток коммитов вида «правка стилей» сворачиваются в один. Смешанный удобен, когда в коммит случайно уехал лишний файл. Жёсткий нужен, когда состояние испорчено и проще откатиться к известной точке.
Стоит назвать соседей: git restore возвращает содержимое файлов, git revert отменяет опубликованный коммит новым коммитом и не переписывает историю, git reflog помнит, где ветка стояла раньше, и по нему сброшенное восстанавливается.
Где спотыкаются
Считают жёсткий сброс обратимым, потому что есть журнал ссылок. Журнал вернёт коммиты, но не вернёт то, что никогда не коммитили: недописанный компонент, час работы над стилями. Перед жёстким сбросом изменения прячут в отложенные.
Сбрасывают уже отправленную ветку и доталкивают её силой. Коллеги получают разошедшуюся историю, и чужие коммиты пропадают при неаккуратном разрешении. На общей ветке отменяют коммит обратным коммитом, а если переписывать историю всё же нужно, делают это с проверкой, что удалённая сторона не изменилась.
Путают сброс файла со сбросом ветки. Команда с путём не двигает указатель, она убирает файл из индекса и оставляет содержимое, а вот отдельная команда возврата файла содержимое как раз затирает. Перепутанные местами, они стоят потерянных правок.