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?


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.