Sobes.tech
Назад к вопросам
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