Git Commit --amend
Ostatnia aktualizacja
git commit --amend zastępuje ostatni commit nowym, dzięki czemu możesz poprawić jego wiadomość albo dodać pliki, których zapomniano dodać do poczekalni. Nie tworzy drugiego commita, tylko przepisuje ostatni. Ponieważ zmienia to hash commita, poprawiaj tak tylko commity, które nie są jeszcze wypchnięte.
Wypróbuj te polecenia w terminalu online: prawdziwa powłoka w przeglądarce, bez żadnej instalacji.
Składnia
| Polecenie | Co robi |
|---|---|
git commit --amend | Edytuje ostatni commit i jego wiadomość |
git commit --amend -m "new message" | Zmienia wiadomość ostatniego commita bezpośrednio w poleceniu |
git commit --amend --no-edit | Dołącza pliki z poczekalni, zostawia tę samą wiadomość |
Typowe przypadki
| Cel | Polecenie |
|---|---|
| Poprawić literówkę w ostatniej wiadomości | git commit --amend -m "fixed message" |
| Dodać zapomniany plik do ostatniego commita | git add file, potem git commit --amend --no-edit |
| Poprawić commit już wypchnięty (ostrożnie) | amend, potem git push --force-with-lease |
Najczęstsze pytania o git commit --amend
Jak zmienić wiadomość ostatniego commita?
Uruchom
git commit --amend -m "new message", żeby zastąpić ją bezpośrednio w poleceniu, albo git commit --amend, żeby otworzyć edytor i przepisać ją tam. Ostatni commit zostaje przepisany z nową wiadomością. Nie rób tego z commitem, który jest już wypchnięty, chyba że force push wchodzi w grę.Jak dodać zapomniany plik do ostatniego commita?
Dodaj plik do poczekalni przez
git add <file>, a potem uruchom git commit --amend --no-edit. Flaga --no-edit zachowuje obecną wiadomość commita i po prostu dołącza nowo dodane zmiany do poprzedniego commita.Czy git commit --amend tworzy nowy commit?
Nie: zastępuje ostatni commit zamiast dodawać kolejny. Wynik wygląda jak jeden commit, ale technicznie to nowy commit z nowym hashem, który zajmuje miejsce starego. Dlatego poprawianie wspólnej historii wymaga force push.
Czy bezpiecznie jest poprawić wypchnięty commit?
Tylko ostrożnie. Amend przepisuje commit, więc po wypchnięciu potrzebny jest
git push --force-with-lease, co może namieszać każdemu, kto już pobrał oryginał. Na wspólnej gałęzi lepiej zrobić nowy commit albo git revert zamiast amend.Czy mogę to przećwiczyć online?
Tak. Otwórz terminal online i uruchom
git commit --amend w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia poprawianie commitów.