Ответ
git reset --hard <commit> — это команда, которая принудительно сбрасывает состояние репозитория до указанного коммита. Она затрагивает три ключевые области Git:
- HEAD (указатель ветки): Перемещает указатель текущей ветки на
<commit>. - Индекс (Staging Area): Полностью очищает индекс и приводит его в точное соответствие с состоянием
<commit>. - Рабочая директория (Working Directory): Перезаписывает все файлы в рабочей директории, чтобы они соответствовали состоянию
<commit>. Все незакоммиченные изменения будут безвозвратно утеряны.
Пример:
Предположим, у вас есть коммиты A-B-C (где C — последний) и локальные изменения в файле main.py.
# Сбросить состояние до коммита B
git reset --hard HEAD~1
Результат:
- Последний коммит
Cудален из истории ветки. - Все изменения, внесенные в коммите
C, исчезли из файлов. - Все локальные, незакоммиченные изменения в
main.pyтакже удалены.
⚠️ Предостережение: Используйте эту команду с особой осторожностью. Это один из немногих случаев в Git, когда можно потерять данные. Если вы случайно сбросили коммиты, их еще можно попытаться восстановить с помощью git reflog.