How to recover deleted git branch?

--

Image by wayhomestudio on Freepik
Image by wayhomestudio on Freepik

จะทำยังไง!! หากเราเผลอลบ branch ใน local ก่อนที่จะ push ขึ้น origin remote นั้นอาจจะทำให้เราเสียเวลาไปทั้งวันหรือมากกว่านั้น เพื่อที่จะทำสิ่งที่เสร็จแล้วอีกครั้งอยากจะเขกโต๊ะสักสิบที 🤦🏼‍♂️

แต่เดี๋ยวก่อน มันต้องมีวิธี recover commited สิ ใช่ครับมันมีอยู่จริง แต่เราอาจจะไม่เคยใช้มัน หรืออาจจะหัวร้อนจนลืม ยิ่งถ้าเป็น feature ที่ต้องรีบเอาขึ้น Prodution แล้วล่ะ ใจมันเริ่มสั่น แต่พอเรามานั่งคิดดี ๆ อีกที เอ๊ะ เราทำได้ Let’s get it

Experimental

  1. ให้ลอง checkout จาก branch ปัจจุบัน
  2. ให้ลองแก้ไข code หรือ ลบไฟล์ หรืออะไรก็ได้
  3. ให้ทำการ commit สิ่งที่เปลี่ยนแปลงไป
  4. ให้ทำการ checkout กลับมาที่ branch ก่อนหน้า แล้วทำการลบ branch ใหม่ที่เราเพิ่งสร้างขึ้นมา
  5. ให้เราใช้คำสั่ง git reflog show เราก็จะให้ history ให้ทำการ copy hash ของ branch ที่เราต้องการนำมันกลับมา
  6. กด q เพื่อทำการออกจากหน้า git history
  7. ทำการ checkout จาก hash ที่เรา copied มา git checkout {hash} เรียบร้อยครับ

Video Example 🙌

Hmmm โล่งใจ… 😂

Happy Celebration GIF By Manchester United

Conclusion

เหตุการณ์ไม่คาดคิดอาจจะเกิดขึ้นได้ตลอดเวลา เลยอยากจะแนะนำว่า push ขึ้นไป origin remote ทุกครั้งที่เสร็จหรือผ่านจุด check point ที่ตั้งเอาไว้ก็น่าจะดูเป็นวิธี ที่ปลอดภัยกว่านะครับ แล้วค่อยไป cleaning branches ทีหลังก็ไม่เสียหายอะไร

แต่เราก็อาจจะกังวลกลัวจะไปแย่ง queue ของ CI project อื่น แต่กลับกันต้องก็อาจจะต้องแลกมาด้วยการที่เราต้องมานั่งปวดหัว ก็ดูไม่น่าคุ้ม หรือใครจะ stash commit เอาก็ได้นะครับ แต่ก็อย่าลืมเพิ่ม message ด้วยนะ ไม่งั้นอาจจะ งง ได้ สุดท้ายแล้วผมก็หวังว่า tips เล็ก ๆ น้อย ๆ นี้น่าจะเป็นประโยชน์ สวัสดีครับ

Happy Coding ❤️

--

--