หนึ่งในช่วงเวลาที่ชวนหัวเสียที่สุดของ Developer คือตอนที่เดดไลน์กำลังบีบเข้ามา แต่โค้ดเจ้ากรรมดันรันไม่ผ่าน หน้าเว็บพัง บิลด์ติดบั๊ก หรือเผลอรันคำสั่งผิดจนประวัติการทำงานหายไปหมด หลายคนสติแตกจนอยากกดลบโฟลเดอร์ทิ้งแล้ว clone ใหม่ แต่ช้าก่อน—Git ถูกออกแบบมาเพื่อบันทึกทุกย่างก้าวอยู่แล้ว ตราบใดที่ยังไม่ลบทิ้ง โอกาสกู้คืนมีเกือบ 100%
เพียงจำ 5 คำสั่ง Git กู้สถานการณ์ เหล่านี้ไว้ คุณอาจแก้งานเสร็จทันส่งได้ในเวลาไม่กี่นาที
สเต็ปที่ 1: ตั้งสติ ตรวจดูความเสียหายก่อนขยับ
ก่อนจะรีบร้อน rollback หรือแก้อะไรต่อ ให้หยุดมือแล้วดูภาพรวมว่าสถานะของโปรเจกต์ตอนนี้อยู่ที่ไหน
git status— ตั้งสติแล้วสำรวจสถานะ
ตรวจเช็กไฟล์ทั้งหมดในเครื่องว่ามีไฟล์ไหนถูกแก้ไข (modified), ไฟล์ไหนเตรียมจะส่ง (staged), หรือมีไฟล์ขยะแปลกปลอมเพิ่มขึ้นมา (untracked) บ่อยครั้งที่โค้ดพังเกิดจากแค่ลืมเอาไฟล์บางไฟล์เข้า หรือเผลอไปแก้ไฟล์คอนฟิกโดยไม่รู้ตัวgit diff— สแกนหาจุดเปลี่ยนแบบบรรทัดต่อบรรทัด
ช่วยให้เห็นความแตกต่างชัดเจนว่าโค้ดที่ยังไม่ได้ commit นั้น มีบรรทัดไหนถูกลบหรือเติมเข้าไป การไล่สายตาดูgit diffจะช่วยให้เจอ “ตัวการ” เช่น เผลอลบวงเล็บปิด หรือคอมเมนต์โค้ดสำคัญทิ้งไป
สเต็ปที่ 2: จัดการย้อนโค้ดให้ถูกบริบท
เมื่อตรวจเจอจุดผิดพลาดแล้ว ให้เลือกวิธีย้อนโค้ดตามสถานการณ์จริง ดังนี้
git restore <file>— ย้อนไฟล์เดี่ยวให้กลับมาเหมือนเดิม (ยังไม่ Commit)
ถ้าลองแก้โค้ดไปเรื่อย ๆ แล้วพบว่าทางนี้ตัน อยากทิ้งการแก้ไขเฉพาะไฟล์นั้นทิ้งไป คำสั่งนี้จะดึงสถานะไฟล์ล่าสุดจาก Commit ก่อนหน้ากลับมาทันที ปลอดภัยและไม่กระทบไฟล์อื่นที่แก้ถูกต้องอยู่แล้วgit restore src/app.controller.ts
git revert <commit>— ถอนโค้ดแบบปลอดภัย (Push ขึ้น Remote ไปแล้ว)
หากโค้ดที่มีบั๊กถูก commit และ push ขึ้น server รวมกับเพื่อนร่วมทีมไปเรียบร้อยแล้ว อย่าใช้git reset --hardเด็ดขาด เพราะจะทำให้ประวัติ Git ของเพื่อนในทีมพังตาม คำสั่งgit revertจะสร้าง Commit ใหม่ขึ้นมาเพื่อหักล้างผลลัพธ์ของ Commit เก่านั้นอย่างสุภาพและปลอดภัยต่อประวัติของทีม
สเต็ปที่ 3: เครื่องมือย้อนเวลาขนานแท้ (เมื่อคิดว่าของหาย)
git reflog— กล่องดำบันทึกทุกการเคลื่อนไหว
หลายคนตกใจแทบช็อกเวลาเผลอใช้git reset --hardหรือสลับ branch จนหา commit ล่าสุดไม่เจอ แต่ Git มีสมุดบันทึกที่ชื่อว่าreflogซึ่งบันทึกทุกจุดที่HEADเคยชี้ไป แม้ commit นั้นจะหลุดออกจาก branch ไปแล้วก็ตามเมื่อรันคำสั่งนี้ คุณจะเห็นรายการ hash ทั้งหมด เช่นHEAD@{1},HEAD@{2}จากนั้นสามารถพาโค้ดกลับมายังจุดปลอดภัยได้ทันทีด้วยgit reset --hard HEAD@{1}
ลำดับการแก้ปัญหาฉบับรวดเร็ว
เมื่อเจอปัญหาหน้างาน ให้เริ่มจากเช็ก 3 คำสั่งพื้นฐานนี้ตามลำดับ
# 1. เช็กสถานะไฟล์รอบตัว
git status
# 2. ดูโค้ดที่เพิ่งแก้ไขไป
git diff
# 3. ถ้าเผลอทำกิ่งหาย หรือ reset ผิด ให้เปิดกล่องดำหาจุดปลอดภัย
git reflog
การทำงานภายใต้แรงกดดัน สิ่งสำคัญที่สุดคืออย่าเพิ่งรีบลบโฟลเดอร์ทิ้งแล้วเริ่มใหม่ ค่อย ๆ เช็กสถานะทีละสเต็ป แล้วปล่อยให้ Git ทำหน้าที่ย้อนเวลากลับไปยังจุดที่โปรเจกต์ยังทำงานได้ตามปกติ