วิธีแก้ Merge Conflict ใน Git

วิธีแก้-Merge-Conflict-ใน Git
วิธีแก้-Merge-Conflict-ใน Git

ในขั้นตอนของการพัฒนา โปรแกรมเมอร์แต่ละคนอาจจะแยก Branch ออกไปพัฒนาแต่ละฟีเจอร์ของโปรเจค แต่อาจจะมีบ้างที่มีการแก้ไขในส่วนของไฟล์ที่ใช้ร่วมกัน เช่น library หลัก, ส่วนการตั้งค่าระบบ Config หรืออาจจะเป็นการแก้ไขใน Modules เดียวกัน แต่เป็นคนละฟีเจอร์ของระบบ

เมื่อมีการแก้ไขในไฟล์เดียวกัน จุดเดียวกัน และเมื่อมีการ Merge การแก้ไขของ Branch นั้น ๆ เข้ามาที่ Master Branch ก็อาจจะทำให้เกิดกรณี Merge Conflict ขึ้นได้

วิธีแก้ Merge Conflict

จากรูปตัวอย่างด้านล่าง โปรเจคนี้ได้มี main branch และ dev-master branch และได้มีการแก้ไขไฟล์ index.html ในส่วนของ title และ body ในตำแหน่งเดียวกัน

และเมื่อเราต้องการจะรวม merge dev-master branch เข้ามาที่ main branch ก็จะทำให้เกิดกรณี merge conflict ตัวอย่างตามรูปด้านล่าง

เมื่อเกิด conflict เราจะไม่สามารถ commit merge ได้ จำเป็นจะต้องแก้ไข conflict ก่อน วิธีการคือ ให้เปิดไฟล์ที่เกิด conflict ขึ้นมา หรือกดปุ่ม Open in Visual Studio Code ( สำหรับ Editor ขึ้นอยู่กับว่าเราลง Editor และตั้งค่าการใช้งานตัวไหนไว้ในเครื่อง ) เมื่อเราเปิดไฟล์ที่มีปัญหาขึ้นมา ระบบ Git จะแสดงจุดที่เกิดปัญหา หรือ Conflict ตัวอย่างตามรูปด้านล่าง

ตัวอย่าง Conflict ด้านบน อธิบายให้เข้าใจได้ง่าย ๆ ดังนี้ครับ

  • Current คือ branch ที่เราเปิดอยู่ตอนนี้นั่นคือ main branch
  • Incoming คือ branch ที่เรากำลังจะนำเข้ามารวมกับ Current นั่นคือ dev-master branch
  • Accept Current Change คือ เราเลือกที่จะใช้การแก้ไขของ main branch
  • Accept Incoming Change คือ เราเลือกที่จะใช้การแก้ไขของ dev-master branch
  • Accept Both Changes คือ ให้ merge โดยการเก็บการแก้ไขของทั้ง 2 branch เอาไว้
  • Compare Changes คือ เปิดไฟล์ใหม่ เพื่อเปรียบเทียบการแก้ไขระหว่าง 2 branch เพื่อใช้ในการตัดสินใจว่าจะใช้ของ branch ไหน

ตอนนี้เรามีตัวเลือกให้เลือกอยู่ 3 ทางคือ current, incoming, both และเมื่อเราเลือกเสร็จ ตรวจสอบการแก้ไขเรียบร้อยแล้ว กดบันทึก เปิดโปรแกรม Github Desktop ขึ้นมาก็จะเห็นว่า Conflict ได้ถูกแก้ไขไปเรียบร้อยแล้ว สามารถกดปุ่ม Commit merge ได้แล้ว

สำหรับบทความอื่น ๆ เกี่ยวกับการใช้งาน git สามารถอ่านเพิ่มเติมได้ที่

Leave a Reply