Команда git reset работает для управления историей коммитов и контроля состояния репозитория. 1 Она позволяет отменять коммиты, перемещать коммиты между ветками, стирать файлы из индекса и возвращаться к более ранним версиям кода. 1
Некоторые варианты работы команды:
- git reset --soft. 1 Указатель HEAD перемещается на выбранное количество коммитов назад, а изменения остаются в разделе проиндексированных файлов и рабочем каталоге. 1 Например, если был создан новый файл и включён в список отслеживаемых изменений, а после этого сделан коммит с ошибкой. 1 В таком случае можно использовать параметр —soft, чтобы сбросить последний коммит и поместить файл обратно в индекс. 1
- git reset --mixed. 1 Команда отменяет последнее сохранение изменений в коммите и сбрасывает индекс. 1 Состояние рабочей директории остаётся нетронутым, что позволяет добавить другие изменения в индекс для последующего коммита. 1
- git reset --hard. 2 Сбрасывает раздел проиндексированных файлов и рабочий каталог до состояния последнего коммита. 2 Эта команда уничтожит все неотправленные изменения, поэтому перед её использованием нужно убедиться, что действительно хочется удалить локальные наработки. 2
Git reset следует использовать для локальных экспериментов, в которых что-то пошло не так, а не для публичных изменений. 2 Если необходимо исправить публичный коммит, лучше воспользоваться специальной командой git revert. 2
При использовании команды git reset необходимо быть осторожным, так как она изменяет историю репозитория, результатом чего может стать потеря данных. 1 Поэтому рекомендуется создавать резервные копии репозитория либо предварительно знать способы восстановления изменений, например, с использованием команды git reflog. 1