Menu
Coddy logo textTech

Git: cofanie commita

Ostatnia aktualizacja

Sposób cofnięcia commita zależy od tego, który to commit i czy jest już wypchnięty. Starszy commit ukryty w historii, albo cokolwiek już udostępnionego, wymaga git revert, które dodaje nowy commit odwracający zmiany, niczego nie przepisując. Serię ostatnich lokalnych commitów można po prostu usunąć przez git reset. Jeśli chcesz cofnąć tylko ostatni commit, strona git undo last commit omawia każdy wariant tej szybkiej poprawki.

Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.

Dwa sposoby cofnięcia commita: git reset cofa gałąź (praca lokalna), git revert dodaje odwrotny commit (bezpieczny po wypchnięciu).

Którego polecenia użyć

SytuacjaPolecenie
Cofnąć jeden starszy commit, zachować wszystko po nimgit revert <hash>
Cofnąć commit, który jest już wypchniętygit revert <hash>
Cofnąć 3 ostatnie lokalne commity, zachować pracęgit reset --soft HEAD~3
Cofnąć 3 ostatnie lokalne commity, odrzucić pracęgit reset --hard HEAD~3
Cofnąć zakres nowymi commitami odwracającymigit revert HEAD~3..HEAD

reset vs revert

Zachowaniegit resetgit revert
Przepisuje historięTakNie
Bezpieczny przy wypchniętych commitachNieTak
Tworzy nowy commitNieTak
Działa na starych commitach w środku historiiNieTak
Może odrzucić zmianyTak (--hard)Nie

Przykład krok po kroku

Cofnij konkretny starszy commit, nawet już wypchnięty, bez ruszania commitów, które przyszły po nim.

KrokPolecenieWynik
1git log --onelineZnajdź hash złego commita (np. a1b2c3d)
2git revert a1b2c3dNowy commit go odwraca; późniejsze commity są nietknięte
3git pushUdostępnij poprawkę: historia nie została przepisana

Najczęstsze pytania o cofanie commita

Jak cofnąć starszy commit bez utraty commitów, które są po nim?
Użyj git revert <hash>. Revert tworzy nowy commit, który odwraca tylko wskazany commit; każdy późniejszy commit zostaje dokładnie taki, jaki był. Najpierw znajdź hash przez git log --oneline. Jeśli revert koliduje z późniejszymi zmianami, Git się zatrzymuje: rozwiąż konflikt i uruchom git revert --continue.
Jak cofnąć kilka commitów naraz?
Przy commitach tylko lokalnych git reset --soft HEAD~3 usuwa trzy ostatnie i zostawia ich zmiany w poczekalni (użyj --hard, żeby je odrzucić). Przy commitach wypchniętych cofnij zakres przez revert: git revert --no-commit HEAD~3..HEAD odwraca wszystkie trzy, a potem jeden git commit zapisuje cofnięcie.
Jak cofnąć commit, który jest już wypchnięty?
Użyj git revert <hash> zamiast reset. Revert tworzy nowy commit, który cofa zmiany docelowego commita i zostawia historię nietkniętą. To bezpieczny sposób na cofanie wspólnych commitów: przepisanie wypchniętej historii przez reset zmusza pozostałych do ręcznego uzgadniania swoich kopii.
Kiedy używać reset, a kiedy revert?
Reset, gdy commity są tylko twoje i wciąż lokalne: po prostu cofa gałąź, jakby tych commitów nigdy nie było. Revert, gdy commit jest wypchnięty, udostępniony albo leży w środku historii: cofa zmiany nowym commitem, który każdy może bezpiecznie pobrać.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom te polecenia w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia cofanie zmian.
Ilustracja języków programowania w Coddy

Ucz się Gita z Coddy

ZACZNIJ