PlusMagi's Blog By Pitt Phunsanit GIT โค้ดพังตอนกำลังเร่งส่งงาน อย่าเพิ่งลบ Repo แล้วเริ่มใหม่! 5 คำสั่ง Git กู้ชีพในไม่กี่นาที

โค้ดพังตอนกำลังเร่งส่งงาน อย่าเพิ่งลบ Repo แล้วเริ่มใหม่! 5 คำสั่ง Git กู้ชีพในไม่กี่นาที

หนึ่งในช่วงเวลาที่ชวนหัวเสียที่สุดของ 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 ทำหน้าที่ย้อนเวลากลับไปยังจุดที่โปรเจกต์ยังทำงานได้ตามปกติ