Перейти к содержанию

Git: сброс истории

Синтаксис этой команды позволяет вернуть указатель HEAD к нужному месту в истории проекта. Но следует внимательно изучить опции, чтобы не потерять файлы!

git reset [ --soft | --mixed | --hard ] [ HEAD^^^ | HEAD~3 | SHA-1 ]

Из синтаксиса видно, что у команды есть два аргумента, каждый из которых может принимать одно из допустимых значений.

Рассмотрим первый аргумент - тип сброса:

  • --hard: удалит указанное число коммитов с конца или начиная от указанного;
  • --mixed (по-умолчанию): не удаляет коммиты, а открепляет их от истории (становятся unstaged);
  • --soft: не удаляет коммиты, но переводит их в staged.

Второй аргумент - это либо идентификатор конкретного коммита, к которому нужно вернуться, либо выражение, означающее "сколько коммитов с конца истории нужно удалить":

  • HEAD^^^^: удалить 4 коммита с конца истории;
  • HEAD~5: удалить 5 коммитов с конца истории;
  • HEAD: удалить последний коммит;
  • SHA-1 (идентификатор коммита): удалить все, начиная с указанного коммита.

Команда git reset - это то же самое, что и git reset --mixed HEAD.