Jak mogę zmienić bazę pierwszego zatwierdzenia?


131

Kiedyś git inittworzyłem nowe repozytorium, a następnie wykonałem trzy zatwierdzenia. Teraz chcę zmienić bazę, aby wrócić i poprawić moje pierwsze zatwierdzenie, ale jeśli to zrobię git rebase -i HEAD~3, narzeka! Jeśli spróbuję tego samego, HEAD~2to trochę działa, ale pozwala mi tylko zmienić kolejność dwóch ostatnich zatwierdzeń.

Jak mam się odnieść do „zatwierdzenia przed wystąpieniem jakichkolwiek zatwierdzeń” lub cofnąć się i wstawić pusty zatwierdzenie?


Odpowiedzi:


220

Prosty sposób, z dostatecznie niedawnym gitem (ten był niedostępny od dawna, więc powinieneś to mieć):

git rebase -i --root

Innym prostym sposobem, jak zauważył twalberg w komentarzu , jest git checkout --orphanskonfigurowanie nowego zatwierdzenia roota, do którego można skopiować stare zatwierdzenia. (To i tak rebase -i --rootkończy się wewnętrznie).


Używając git rebase -i --rootDostaję błąd error: cannot 'fixup' without a previous commitpodczas próby
zmiażdżenia

Co dokładnie edytujesz w arkuszu instrukcji? Powinieneś mieć listę zatwierdzeń, z najstarszymi na górze i poleceniami pickdla każdego z nich. Zmień drugą pick na albo squashalbo fixup, napisz instrukcję, wyjdź z edytora, a Git powinien wykonać zadanie.
torek
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.