跳到主要内容
返回文章列表

Git Rerere จำวิธีแก้ Merge Conflict ที่เคยแก้แล้ว

rerere บันทึกรูปแบบ conflict และผลการแก้เพื่อใช้ซ้ำเมื่อเจอปัญหาเดิม อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ

Git Rerere จำวิธีแก้ Merge Conflict ที่เคยแก้แล้ว

rerere บันทึกรูปแบบ conflict และผลการแก้เพื่อใช้ซ้ำเมื่อเจอปัญหาเดิม เหมาะกับสาขาที่ต้อง rebase บ่อยและเจอ conflict เดิมซ้ำ บทความนี้สรุปแนวคิดจากเอกสารทางการของ Git และจุดที่ควรตรวจเมื่อนำไปใช้จริง

ภาพรวม

Git บันทึกประวัติเป็น commit และแยกงานด้วย reference เช่น branch คำสั่งต่าง ๆ อาจเปลี่ยนไฟล์ทำงาน index หรือประวัติ จึงควรตรวจผลก่อนใช้กับงานร่วมกัน

หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: rerere บันทึกรูปแบบ conflict และผลการแก้เพื่อใช้ซ้ำเมื่อเจอปัญหาเดิม จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ

หลักการทำงาน

เมื่อ rebase หรือ merge รอบถัดไป Git อาจนำวิธีแก้ที่บันทึกไว้มาใช้โดยอัตโนมัติ

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

เหมาะกับงานแบบไหน

เหมาะกับสาขาที่ต้อง rebase บ่อยและเจอ conflict เดิมซ้ำ

ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง

ขั้นตอนนำไปใช้

  1. สร้าง branch หรือ worktree ทดสอบและบันทึก commit hash
  2. ดู git status และ git log ก่อนและหลังใช้คำสั่ง
  3. ตรวจ diff และรันทดสอบที่เกี่ยวข้องก่อนส่งงาน

เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน

ข้อควรระวัง

ต้องตรวจผลหลังใช้ซ้ำ เพราะบริบทใหม่อาจทำให้คำตอบเก่าไม่ถูกต้อง

แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ

สรุป

rerere บันทึกรูปแบบ conflict และผลการแก้เพื่อใช้ซ้ำเมื่อเจอปัญหาเดิม เหมาะกับสาขาที่ต้อง rebase บ่อยและเจอ conflict เดิมซ้ำ ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่

อ่านเพิ่มเติม: เอกสารทางการของ Git