[GIT] เมื่อ rebase พลาด
เมื่อครู่นี้มีเหตุผิดคิวในการสั่ง git rebase HEAD~6
โดยลืม ใส่ flag interactive ทำให้ตัว commit หายไป 6 อัน
เลยต้องไปคุ้ยดูว่า แก้ด้วยอะไรได้บ้าง ก็พบว่าสามารถใช้ reset ได้
โดยใช้
git reset --hard ORIG_HEAD
โดยปกติ เราจะรู้จักตัว HEAD ในฐานะของตำแหน่งปัจจุบันของ commit
อย่างไรก็ตามถ้า เราจำเป็นต้องใช้คำสั่งที่ส่งผลกระทบต่อ chain เช่น merge , rebase หรือ pull
จะมีการ save HEAD เดิม ไปอยู่ใน ORIG_HEAD
ทำให้เมื่อ เรารู้สึกคำสั่งนั้นไม่ work เราก็จะสามารถ ย้อนกลับมาด้วยการอ้างอิงตำแหน่งเก่าได้
อย่างไรก็ตาม ถ้ามันยาวไกลกว่านั้น git ก็ยังมีท่ากันตายให้อีกท่าหนึ่งนั่นคือ
git reset — hard HEAD@{n}
โดย n คือเลข HEAD เดิม ย้อนกลับไป
ซึ่งเราสามารถดู เลขตัวนี้ได้จาก
git reflog
โดยถ้าเราเข้าไปดูก็จะพบว่า HEAD@{1} ก็จะเป็น ORIG_HEAD นั่นเอง