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.
Składnia
| Polecenie | Co robi |
|---|---|
git reset --hard | Odrzuca wszystkie niezatwierdzone zmiany (zostaje na HEAD) |
git reset --hard HEAD~1 | Usuwa ostatni commit razem z jego zmianami |
git reset --hard <hash> | Wymusza cofnięcie gałęzi do konkretnego commita |
git reset --hard origin/main | Dokładnie dopasowuje lokalną gałąź do zdalnej |
Odzyskiwanie po twardym resecie
Zatwierdzoną pracę usuniętą przez reset zwykle nadal da się odzyskać.
| Krok | Polecenie | Wynik |
|---|---|---|
| 1 | git reflog | Lista miejsc, w których był HEAD, z hashami |
| 2 | git reset --hard <hash> | Powrót do commita sprzed resetu |
Najczęstsze pytania o git reset --hard
Co właściwie robi git reset --hard?
--soft (zmiany zostają w poczekalni) i --mixed (zmiany zostają poza poczekalnią) --hard to jedyny tryb, który wyrzuca zmiany.Jak odrzucić wszystkie lokalne zmiany?
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?
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?
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?
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.