Junior — Middle
Můžete vysvětlit rozdíly mezi příkazy git reset s parametry --soft, --mixed a --hard?
sobes.tech AI
Odpověď od AI
Команда git reset используется для перемещения указателя ветки и изменения состояния индекса и рабочего каталога. Различия между параметрами:
-
--soft— перемещает указатель ветки (HEAD) на указанный коммит, при этом индекс и рабочая директория остаются без изменений. Изменения остаются в индексе, как будто вы их подготовили к коммиту. -
--mixed(значение по умолчанию) — перемещает указатель ветки и сбрасывает индекс к состоянию указанного коммита, но рабочая директория не меняется. Изменения становятся неиндексированными. -
--hard— перемещает указатель ветки, сбрасывает индекс и рабочую директорию к состоянию указанного коммита. Все несохранённые изменения будут потеряны.
Пример:
# Переместить HEAD на предыдущий коммит, оставить изменения в индексе
git reset --soft HEAD~1
# Переместить HEAD на предыдущий коммит, сбросить индекс, оставить изменения в рабочей директории
git reset --mixed HEAD~1
# Переместить HEAD на предыдущий коммит, сбросить индекс и рабочую директорию
git reset --hard HEAD~1