Git: cofanie ostatniego commita
Ostatnia aktualizacja
Żeby cofnąć najnowszy commit, zdecyduj, co ma się stać z jego zmianami. Zachowaj je w poczekalni przez git reset --soft HEAD~1, zachowaj je poza poczekalnią przez zwykłe git reset HEAD~1 albo wyrzuć je przez git reset --hard HEAD~1. Jeśli commit jest tylko trochę nie taki, git commit --amend poprawi go w miejscu. Jeśli jest już wypchnięty, użyj git revert zamiast przepisywać historię. Żeby cofnąć starszy commit albo kilka naraz, zobacz stronę git undo commit.
Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.
Wybierz, co zrobić ze zmianami
| Cel | Polecenie |
|---|---|
| Cofnąć commit, zmiany zostają w poczekalni | git reset --soft HEAD~1 |
| Cofnąć commit, zmiany zostają poza poczekalnią | git reset HEAD~1 |
| Cofnąć commit, odrzucić zmiany | git reset --hard HEAD~1 |
| Poprawić ostatni commit (wiadomość albo pliki) | git commit --amend |
| Cofnąć commit, który jest już wypchnięty | git revert HEAD |
Przykład krok po kroku
Cofnij ostatni commit i zatwierdź go ponownie z lepszą wiadomością.
| Krok | Polecenie | Wynik |
|---|---|---|
| 1 | git reset --soft HEAD~1 | Commit usunięty, zmiany zostają w poczekalni |
| 2 | git commit -m "clearer message" | Ponowny commit tych samych zmian |
Najczęstsze pytania o cofanie ostatniego commita
Jak cofnąć ostatni commit, ale zachować zmiany?
git reset --soft HEAD~1. To usuwa ostatni commit, ale zostawia jego zmiany w poczekalni, więc możesz od razu zatwierdzić je ponownie. Jeśli zmiany mają zostać poza poczekalnią, w katalogu roboczym, użyj git reset HEAD~1 (tryb domyślny).Jak cofnąć ostatni commit i usunąć zmiany?
git reset --hard HEAD~1. To usuwa commit i odrzuca jego zmiany z katalogu roboczego. To operacja destrukcyjna: jeśli praca może się jeszcze przydać, użyj --soft albo odzyskaj ją później przez git reflog.Co jeśli trzeba poprawić tylko wiadomość commita?
git commit --amend. Otwiera ono ponownie ostatni commit, dzięki czemu możesz edytować jego wiadomość (i w razie potrzeby ponownie dodać pliki do poczekalni) bez tworzenia osobnego commita. Nie poprawiaj tak commita, który jest już wypchnięty, bo to przepisuje historię.Jak cofnąć ostatni commit po jego wypchnięciu?
git revert HEAD. Revert tworzy nowy commit, który odwraca ostatni, i zostawia historię nietkniętą: to bezpieczny wybór na wspólnych gałęziach. Reset wypchniętego commita zmusza wszystkich innych do godzenia się z przepisaną gałęzią.