Sobes.tech
Junior — Middle

Можете ли да обясните разликите между командите git reset с параметри --soft, --mixed и --hard?

sobes.tech AI

Отговор от 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