Menu
Coddy logo textTech

Git Reset --hard

Ostatnia aktualizacja

git reset --hard przesuwa gałąź na docelowy commit i wymusza, żeby poczekalnia i katalog roboczy dokładnie mu odpowiadały, odrzucając po drodze każdą niezatwierdzoną zmianę. To najbardziej destrukcyjna forma git reset, więc zanim go uruchomisz, upewnij się, że bieżąca praca nie jest ci potrzebna.

Commit zniknął przez pomyłkę po resecie? Twardy reset zwykle da się odwrócić przez git reflog. Wypróbuj te polecenia bezpiecznie w terminalu online: prawdziwa powłoka w przeglądarce.

git reset --hard cofa HEAD i odrzuca wszystko, co było później, łącznie z przechowalnią i katalogiem roboczym.

Składnia

PolecenieCo robi
git reset --hardOdrzuca wszystkie niezatwierdzone zmiany (zostaje na HEAD)
git reset --hard HEAD~1Usuwa ostatni commit razem z jego zmianami
git reset --hard <hash>Wymusza cofnięcie gałęzi do konkretnego commita
git reset --hard origin/mainDokładnie dopasowuje lokalną gałąź do zdalnej

Odzyskiwanie po twardym resecie

Zatwierdzoną pracę usuniętą przez reset zwykle nadal da się odzyskać.

KrokPolecenieWynik
1git reflogLista miejsc, w których był HEAD, z hashami
2git reset --hard <hash>Powrót do commita sprzed resetu

Najczęstsze pytania o git reset --hard

Co właściwie robi git reset --hard?
Przesuwa bieżącą gałąź na docelowy commit i nadpisuje zarówno poczekalnię, jak i katalog roboczy, żeby mu odpowiadały. Wszystkie niezatwierdzone zmiany, w poczekalni czy poza nią, zostają odrzucone. W porównaniu z --soft (zmiany zostają w poczekalni) i --mixed (zmiany zostają poza poczekalnią) --hard to jedyny tryb, który wyrzuca zmiany.
Jak odrzucić wszystkie lokalne zmiany?
Uruchom git reset --hard bez commita, żeby przywrócić katalog roboczy do ostatniego commita i wymazać niezatwierdzone edycje. Żeby usunąć też nieśledzone pliki, których reset nie rusza, uruchom potem git clean -fd.
Jak zresetować gałąź, żeby odpowiadała zdalnej?
Uruchom git fetch, a potem git reset --hard origin/main (podstaw swoją gałąź). To wymusza dokładną zgodność lokalnej gałęzi ze zdalną i odrzuca lokalne commity oraz zmiany, które się od niej różnią. Przydaje się, gdy lokalna gałąź się pogmatwała i chcesz po prostu wersję z repozytorium zdalnego.
Czy da się cofnąć git reset --hard?
Zatwierdzoną pracę zwykle tak: uruchom git reflog, żeby znaleźć commit, na który wskazywała gałąź przed resetem, a potem git reset --hard <hash>, żeby do niego wrócić. Zmian, które nigdy nie trafiły do commita (były tylko w katalogu roboczym), nie da się odzyskać, więc traktuj --hard ostrożnie.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git reset --hard w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia resetowanie i cofanie zmian.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ