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?

lxs
źródło
4
Możliwy duplikat edycji zatwierdzenia roota w Git?
Liam

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).

torek
źródło
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