Claude Code แก้ไฟล์ผิด ต้องย้อนกลับอย่างไร

ถ้า Claude Code แก้ไฟล์ผิดหรือทำให้โค้ดเสีย ให้ตรวจ Diff ก่อน แล้วเลือกย้อนเฉพาะการแก้ที่ต้องการ วิธีที่เหมาะขึ้นอยู่กับว่าเป็นการแก้ในเซสชันปัจจุบัน การเปลี่ยนแปลงจากคำสั่ง Shell หรือการแก้ที่ Commit เข้า Git ไปแล้ว

ก่อนย้อนกลับ ควรตรวจสถานะ Git และไฟล์ที่เปลี่ยน เพื่อไม่ให้เผลอลบงานอื่นที่ยังต้องการเก็บไว้

❶ ตรวจไฟล์ที่เปลี่ยนก่อน

ใน Claude Code ใช้คำสั่ง:

/diff

คำสั่งนี้เปิดดูการเปลี่ยนแปลงที่ยังไม่ได้ Commit และ Diff แยกตามรอบการทำงาน จากนั้นตรวจด้วย Git ได้อีกทาง:

git status
git diff

หากมีการแก้ไฟล์อื่นที่ต้องการเก็บไว้ ให้จดชื่อไฟล์เหล่านั้นก่อนย้อนกลับ

❷ ย้อนการแก้ของ Claude ด้วย /rewind

Claude Code สร้าง Checkpoint อัตโนมัติก่อนเริ่มแต่ละรอบคำสั่ง หากต้องการกลับไปก่อนที่ Claude จะแก้ผิด ให้พิมพ์:

/rewind

หรือกด Esc สองครั้งขณะที่ช่องพิมพ์ว่าง จากนั้นเลือกจุดก่อนเกิดปัญหา แล้วเลือกวิธีคืนค่าที่ต้องการ:

  • Restore code — คืนไฟล์ แต่เก็บบทสนทนาปัจจุบันไว้
  • Restore code and conversation — คืนทั้งไฟล์และบทสนทนากลับไปยังจุดนั้น
  • Restore conversation — ย้อนบทสนทนา แต่คงไฟล์เวอร์ชันปัจจุบันไว้

เลือกจุดให้รอบคอบ เพราะการคืนโค้ดจะย้อนการแก้ที่เกิดหลัง Checkpoint นั้น ไม่ได้เลือกย้อนเฉพาะบรรทัดที่ผิดเสมอไป

❸ ถ้าเผลอกด Esc สองครั้งแล้วไม่เห็นเมนู

เมนู Rewind จะเปิดเมื่อช่องพิมพ์ว่างเท่านั้น หากมีข้อความค้างอยู่ การกด Esc สองครั้งจะล้างข้อความในช่องแทน ให้กดลูกศรขึ้นเพื่อเรียกข้อความที่ล้างกลับมา แล้วลองเปิด /rewind ใหม่เมื่อช่องพิมพ์ว่าง

❹ ย้อนการแก้เฉพาะไฟล์ด้วย Git

ถ้าต้องการคืนไฟล์เพียงไฟล์เดียว ให้ตรวจ Diff ของไฟล์นั้นก่อน แล้วค่อยคืนเฉพาะไฟล์ที่ยืนยันแล้วว่าไม่ต้องการเก็บ เช่น:

git diff -- path/to/file
git restore -- path/to/file

คำสั่ง git restore จะทิ้งการเปลี่ยนแปลงที่ยังไม่ Commit ในไฟล์ที่ระบุ จึงไม่ควรใช้กับไฟล์ที่ยังมีงานอื่นที่ต้องการเก็บ หากไม่แน่ใจ ให้สำรองไฟล์หรือสร้าง Commit ก่อน

หลีกเลี่ยงการใช้คำสั่งคืนค่าทั้ง Repository โดยไม่ตรวจสถานะก่อน เพราะอาจลบการเปลี่ยนแปลงอื่นที่ไม่เกี่ยวกับ Claude Code

❺ หากการเปลี่ยนแปลงถูก Commit ไปแล้ว

การ Rewind ใช้สำหรับย้อนจุดในเซสชันและไฟล์ที่ยังอยู่ในช่วง Checkpoint หาก Commit การแก้ผิดไปแล้ว วิธีที่ปลอดภัยกว่าคือใช้ git revert เพื่อสร้าง Commit ใหม่ที่ย้อนผลของ Commit เดิม โดยยังคงประวัติ Git ไว้

ก่อนทำ ให้ตรวจว่า Commit ที่ต้องการย้อนคือรายการใด และตรวจว่าการย้อนจะไม่ทับงานของผู้อื่น โดยเฉพาะ Repository ที่ทำงานร่วมกัน

❻ เข้าใจข้อจำกัดของ Checkpoint

/rewind ติดตามการแก้ไฟล์ที่ Claude ทำผ่านเครื่องมือแก้ไฟล์ของ Claude Code แต่มีข้อยกเว้นที่ควรรู้:

  • ไฟล์ที่เปลี่ยนด้วยคำสั่ง Bash อย่างเดียวอาจไม่อยู่ใน Checkpoint ให้ใช้ Git ตรวจและย้อน
  • การแก้ที่ทำด้วยมือจากโปรแกรมอื่นหรือเซสชันอื่นอาจไม่ถูกบันทึกใน Checkpoint
  • การเปลี่ยนแปลงจาก Subagent บางประเภทอาจไม่ถูกย้อน ต้องตรวจ Git Diff เพิ่ม
  • ไฟล์แบบ symlink หรือ hard link อาจถูกข้ามขณะคืนค่า
  • Snapshot ของเซสชันมีระยะเวลาเก็บรักษา หากย้อนกลับนานหลังจบเซสชัน อาจไม่มีไฟล์สำรองให้คืนแล้ว

Checkpoint ช่วยกู้คืนงานระหว่างเซสชันได้เร็ว แต่ไม่ใช่ตัวแทนของ Git สำหรับประวัติและการสำรองระยะยาว

❼ วิธีป้องกันก่อนให้ Claude แก้ไฟล์ครั้งต่อไป

ก่อนเริ่มงานใหม่ ให้ตรวจสถานะ Repository และ Commit งานที่ต้องการเก็บไว้ จากนั้นขอให้ Claude แสดงแผนหรือ Diff ก่อนอนุมัติการแก้ไข

ตัวอย่างคำสั่ง:

ตรวจเฉพาะไฟล์ที่เกี่ยวข้องก่อน ห้ามแก้ไฟล์อื่น แสดงแผนและ Diff ที่เสนอ แล้วรอให้ฉันตรวจสอบก่อนนำไปใช้

ComSiam แนะนำให้ Commit หรือสำรองงานก่อนการแก้ไขครั้งใหญ่ และตรวจ git diff หลัง Claude ทำงานทุกครั้ง

❽ คำถามที่พบบ่อย

/rewind ย้อนบทสนทนาและไฟล์พร้อมกันหรือไม่?

ไม่จำเป็นต้องย้อนพร้อมกัน เมนูมีตัวเลือกคืนโค้ด คืนทั้งโค้ดและบทสนทนา หรือคืนเฉพาะบทสนทนา ให้เลือกตามสิ่งที่ต้องการย้อน

/rewind ใช้ย้อนคำสั่ง Bash ได้หรือไม่?

อาจย้อนการเปลี่ยนแปลงของ Bash ในไฟล์ที่ Claude Code เคยแก้ผ่านเครื่องมือแก้ไฟล์ในเซสชันได้ แต่ไฟล์ที่เปลี่ยนด้วย Bash อย่างเดียวไม่ได้ถูกติดตามเสมอ ให้ใช้ Git ตรวจและกู้คืนไฟล์เหล่านั้น

Commit การแก้ผิดแล้ว ควรใช้ /rewind หรือไม่?

ถ้า Commit ไปแล้ว ให้ใช้ Git ตรวจประวัติและพิจารณา git revert ซึ่งสร้าง Commit ใหม่เพื่อย้อนการเปลี่ยนแปลง แทนการเปลี่ยนประวัติเดิมโดยไม่ตรวจสอบ

ทำไม Rewind คืนค่าไฟล์บางไฟล์ไม่ได้?

อาจเป็นไฟล์ที่ไม่ถูกติดตามใน Checkpoint เช่น ไฟล์จากคำสั่ง Bash, การแก้จากภายนอกเซสชัน หรือไฟล์แบบ Symlink/Hard link ให้ตรวจ Git Diff และใช้ระบบควบคุมเวอร์ชันช่วยกู้คืน

❾ สรุปวิธีย้อนเมื่อ Claude Code แก้ไฟล์ผิด

เริ่มจากตรวจ /diff, git status และ git diff หากเป็นการแก้ในเซสชัน ให้ใช้ /rewind แล้วเลือกจุดและรูปแบบการคืนค่าที่ตรงกับความต้องการ หากต้องย้อนเฉพาะไฟล์ ให้ตรวจไฟล์นั้นก่อนใช้ Git และระวังการทิ้งงานที่ยังไม่ Commit

หาก Commit ไปแล้ว ให้ตรวจประวัติและใช้ git revert อย่างระมัดระวัง ComSiam แนะนำให้ใช้ Git ควบคู่กับ Checkpoint เพื่อกู้คืนงานได้ทั้งระยะสั้นและระยะยาว