Menu
Coddy logo textTech

Git Revert

Ostatnia aktualizacja

git revert cofa commit, tworząc nowy commit, który wprowadza odwrotność jego zmian. Ponieważ dopisuje historię zamiast ją przepisywać, revert to bezpieczny sposób na cofnięcie commita, który jest już wypchnięty. W przeciwieństwie do git reset nie zmusza wszystkich innych do godzenia się z przepisaną gałęzią.

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

git revert zostawia błędny commit na miejscu i dodaje nowy commit, który go odwraca; historia nigdy nie jest przepisywana.

Składnia

PolecenieCo robi
git revert HEADCofa najnowszy commit
git revert <hash>Cofa konkretny commit po hashu
git revert HEAD~2..HEADCofa zakres commitów
git revert -n <hash>Cofa, ale jeszcze nie tworzy commita (tylko poczekalnia)
git revert -m 1 <merge-hash>Cofa commit scalający, zachowując rodzica 1

W trakcie revert

Jeśli revert trafi na konflikt, rozwiąż go i kontynuuj.

PolecenieCo robi
git revert --continueWznawia po rozwiązaniu konfliktów
git revert --abortAnuluje trwający revert
git revert --skipPomija bieżący commit i kontynuuje

revert vs reset

Zachowaniegit revertgit reset
Przepisuje historięNieTak
Bezpieczny przy wypchniętych commitachTakNie
Tworzy nowy commitTakNie
Cofa commit ze środka historiiTakNiewygodnie

Najczęstsze pytania o git revert

Czym różni się git revert od git reset?
git revert dodaje nowy commit, który cofa zmiany wcześniejszego, i zostawia historię nietkniętą, więc jest bezpieczny dla commitów już wypchniętych. git reset przesuwa wskaźnik gałęzi do tyłu i przepisuje historię; to w porządku przy lokalnych commitach, ale niebezpieczne na wspólnych gałęziach. Revert służy do cofania publicznych commitów, reset do cofania lokalnych.
Jak cofnąć commit, który jest już wypchnięty?
Uruchom git revert <hash> (albo git revert HEAD dla najnowszego), a potem wypchnij nowy commit cofający. Ponieważ revert nie przepisuje historii, to właściwy sposób na cofnięcie wspólnego commita: bez force push i bez kłopotów dla osób z zespołu, które już go pobrały.
Jak cofnąć commit scalający?
Commit scalający ma dwóch rodziców, więc Git musi wiedzieć, którą linię historii zachować. Użyj git revert -m 1 <merge-hash>, gdzie -m 1 mówi Gitowi, żeby zachował pierwszego rodzica (zwykle gałąź, do której scalano). Revert scalenia cofa scalone zmiany, ale zostawia sam merge w historii.
Czy można cofnąć kilka commitów naraz?
Tak. Podaj zakres, np. git revert HEAD~2..HEAD, żeby cofnąć dwa ostatnie commity, albo wymień kilka hashy. Domyślnie Git tworzy jeden commit cofający na każdy cofany commit; dodaj -n, żeby umieścić wszystkie odwrócenia w poczekalni bez commita, a potem zrób jeden commit samodzielnie.
Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom git revert 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