[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 นั่นเอง

--

--

Teerayut Hiruntaraporn
Teerayut Hiruntaraporn

No responses yet