В любой момент времени Вы можете использовать следующие команды, чтобы вернуть рабочее дерево Вашего репозитория к состоянию последней созданной ревизии:
git reset -- .
git checkout .
git clean -fd
Эти команды будут подробнее рассмотрены в последующих главах курса, пока остановимся на кратком описании результатов их выполнения:
git reset -- .
удаляет все изменения из области подготовки, в Git эта операция называется «unstaging»; при этом сами изменения не исчезают и остаются в рабочем дереве; файлы, добавленные в рабочее дерево с момента создания последней ревизии, становятся неотслеживаемыми;
git checkout .
восстанавливает все файлы, за исключением неотслеживаемых, в рабочем дереве до состояния, зафиксированного последней ревизией;
git clean -fd
удаляет неотслеживаемые файлы.
Таким образом, после выполнения этих команд рабочее дерево становится «чистым», т.е. полностью синхронизированным с последней ревизией.
На слэнге Git такая последовательность действий называется «hard reset», она может быть выполнена с помощью одной команды:
git reset --hard
Как отмечалось ранее, изменения и файлы, потерянные в результате такого сброса и не зафиксированные ревизиями, не поддаются восстановлению средствами Git.
По умолчанию git reset --hard
не удаляет неотслеживаемые файлы, если они не были добавлены в область подготовки. Это поведение может показаться для Вас немного странным. Во избежание недоразумений всегда проверяйте статус репозитория перед совершением важных операций.
Подготовка изменений | Создание ревизии |