Работа с git reset
В этой статье речь пойдёт о разнице между разными режимами работы утилиты git reset.
Итак начальные данные

![]()
- file1.md - файл, который закоммичен
- file2.md - файл, который находится в stage(index), то есть уже подготовлен для коммита
- file3.md - неотслеживаемый файл
Рассмотрим результат работы команды git reset с разными опциями.
git reset --soft HEAD~1

- откат на предыдущий коммит
- file1.md - перешёл в stage
- file2.md - остался в stage
- file3.md - остался без изменений
git reset --mixed HEAD~1
или просто
git reset HEAD~1

- откат на предыдущий коммит
- file1.md - перешёл в состояние неотслеживаемого файла
- file2.md - перешёл в состояние неотслеживаемого файла
- file3.md - остался без изменений
git reset --keep HEAD~1
![]()
- откат на предыдущий коммит
- file1.md - удалён, файл не сохранился
- file2.md - перешёл в состояние неотслеживаемого файла
- file3.md - остался без изменений
git reset --hard HEAD~1
![]()
- откат на предыдущий коммит
- file1.md - удалён, файл не сохранился
- file2.md - удалён, файл не сохранился
- file3.md - остался без изменений