Назад к вопросам
Junior — Middle
62
Можете объяснить отличия между командами git reset с параметрами --soft, --mixed и --hard?
Ответ от нейросети
sobes.tech 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