Menu
Coddy logo textTech

Git Reset --hard

Последнее обновление

git reset --hard перемещает вашу ветку на целевой коммит и заставляет и индекс (staging area), и рабочее дерево точно ему соответствовать - отбрасывая по пути каждое незакоммиченное изменение. Это самая разрушительная форма git reset, поэтому убедитесь, что текущая работа вам больше не нужна, прежде чем запускать его.

Случайно отменили коммит? Hard reset обычно можно восстановить через git reflog. Попробуйте это безопасно в терминальном playground - настоящая оболочка в вашем браузере.

git reset --hard откатывает HEAD и отбрасывает всё, что после него, - включая индекс и рабочий каталог.

Синтаксис

CommandWhat it does
git reset --hardОтбрасывает все незакоммиченные изменения (остаётся на HEAD)
git reset --hard HEAD~1Удаляет последний коммит и его изменения
git reset --hard <hash>Принудительно возвращает ветку к конкретному коммиту
git reset --hard origin/mainДелает локальную ветку точной копией удалённой

Восстановление после hard reset

Закоммиченная работа, которую вы отбросили через reset, обычно всё ещё восстановима.

StepCommandResult
1git reflogВыводит список, где был HEAD, с хешами
2git reset --hard <hash>Возвращает к коммиту, который был до reset

Частые вопросы про git reset --hard

Что на самом деле делает git reset --hard?
Он перемещает вашу текущую ветку на целевой коммит и перезаписывает и индекс, и рабочее дерево, чтобы они ему соответствовали. Любые незакоммиченные изменения - проиндексированные или нет - отбрасываются. По сравнению с --soft (который оставляет изменения проиндексированными) и --mixed (который оставляет их непроиндексированными), --hard - единственный режим, который выбрасывает изменения.
Как отменить все мои локальные изменения?
Запустите git reset --hard без указания коммита, чтобы сбросить рабочее дерево к последнему коммиту, стирая незакоммиченные правки. Чтобы также удалить неотслеживаемые файлы, которых reset не касается, следом выполните git clean -fd.
Как сбросить мою ветку, чтобы она совпадала с удалённой?
Выполните git fetch, затем git reset --hard origin/main (подставьте свою ветку). Это принудительно приводит вашу локальную ветку в точное соответствие удалённой, отбрасывая локальные коммиты и изменения, которые от неё отклонились - полезно, когда локальная ветка пошла не так и вам просто нужна версия из удалённого репозитория.
Можно ли отменить git reset --hard?
Закоммиченную работу обычно да: выполните git reflog, чтобы найти коммит, на который указывала ваша ветка до reset, затем git reset --hard <hash>, чтобы вернуться к нему. Изменения, которые никогда не были закоммичены (только в рабочем дереве), восстановить нельзя, поэтому обращайтесь с --hard осторожно.
Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы запустить git reset --hard в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает сброс и отмену изменений.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ