Bagaimana cara saya melakukan rebase pada komit pertama?

129

Saya biasa git initmembuat repo baru, lalu membuat tiga komit. Sekarang saya ingin melakukan rebase untuk kembali dan mengubah komitmen pertama saya, tetapi jika saya melakukannya git rebase -i HEAD~3mengeluh! Jika saya mencoba hal yang sama dengan HEAD~2maka itu agak berhasil tetapi hanya memungkinkan saya mengatur ulang dua komitmen terakhir.

Bagaimana saya merujuk ke 'komit sebelum ada komit' atau kembali dan menyisipkan komit kosong?

lxs
sumber
4
Kemungkinan duplikat dari Edit root commit di Git?
Liam

Jawaban:

217

Cara mudah, dengan git yang cukup baru (ini sudah lama keluar sekarang jadi Anda harus memiliki ini):

git rebase -i --root

Cara mudah lainnya, seperti yang dicatat oleh twalberg dalam sebuah komentar , adalah menggunakan git checkout --orphanset up untuk membuat komit root baru, yang mana Anda dapat menyalin komit lama di atasnya. (Ini yang rebase -i --rootakhirnya dilakukan secara internal.)

torek
sumber
Menggunakan git rebase -i --rootsaya mendapatkan kesalahan error: cannot 'fixup' without a previous commitketika mencoba
menghentikan
Apa sebenarnya yang Anda edit di lembar instruksi? Anda harus memiliki daftar komit, dengan yang terlama di atas, dan perintah pickuntuk masing-masing. Ubah yang kedua pick menjadi squashatau fixup, tulis lembar instruksi, keluar dari editor Anda, dan Git harus melakukan pekerjaan itu.
torek