Di Git, bagaimana Anda mengembalikan rebase jika Anda tidak menyukainya?
Git tidak memiliki dry-run untuk rebase. Jika saya melakukan rebase dan belum melakukan push, bagaimana cara melakukan rollback ke sebelumnya, seolah-olah tidak pernah terjadi?
Jawaban:
Anda dapat menggunakan reflog untuk menemukan tindakan pertama sebelum rebase dimulai dan kemudian mengatur ulang --hard kembali ke sana. misalnya
Sekarang Anda harus kembali ke sebelum rebase dimulai.
Untuk menemukan tempat yang tepat untuk mengatur ulang, Anda cukup memilih entri yang paling dekat dengan atas yang tidak dimulai dengan "rebase".
Pendekatan alternatif
Jika rebase adalah satu - satunya hal yang telah Anda lakukan di cabang, yaitu Anda tidak memiliki perubahan / perubahan yang tidak diinginkan - maka Anda bisa menghapus cabang lokal dengan
git branch -D
dan kemudian memeriksanya lagi:Atau untuk efek yang sama, Anda dapat mengatur ulang --hard ke cabang asal:
Jika Anda melakukan ini saat Anda memiliki komit tidak terdorong lainnya, maka Anda akan kehilangannya. Dalam kasus tersebut, cukup gunakan pendekatan reflog di atas untuk melompat kembali ke entri reflog tempat Anda membuat komit.
sumber
ORIG_HEAD
ke nilai hash asli dari cabang yang di-rebase. Jadi daripada mencari angka 2HEAD@{2}
, Anda bisa menggunakanORIG_HEAD
... tapi hanya jikaORIG_HEAD
masih tidak terganggu. Sekelompok perintah Git mengaturnya (rebase, am, reset, dan merge, dalam berbagai keadaan).Rebase menyimpan cadangan status lama sebagai
ORIG_HEAD
.Jadi, Anda dapat mengembalikan rebase terakhir dengan menjalankan:
sumber