Conflict Handling

โดยหากว่ามีการทำ merge หรือคนอื่นมีการแก้ไขโค้ดของเรา หากว่าบรรทัดนั้นมีการเปลี่ยนแปลง ไม่สามารถที่จะทำการรวมบรรทัดได้

อะไรคือ conflict

ดัวอย่างเช่น นาย A ทำ บน branch develop และ branch ทำหน้าที่เป็น base branch และเป็น commit ที่เก่ากว่า (จาก timestamp)

print("hello world")

และนาย B ได้ทำการแก้ไข commit บน branch feature/printer ซึ่ง branch แตกออกมาจาก branch develop โดยที่ได้แก้บรรทัดของนาย A

แก้ไขจาก

print("hello world")

เป็น

print("hello meself")

และมีการทำ merge ระหว่าง 2 branch นี้ ทำให้เกิดการ conflict ขื้น เพราะ git ไม่รู้ว่าจะเอาของใครเป็นของถูกต้องนั่นเอง

จึงต้องมีการแก้ไขปัญหานี้ โดยหลังจากการทำ merge แล้ว ตัวระบบ Git จะแสดงว่าไฟล์ไหนมีการ conflict เกิดขึ้น โดยจะรอให้ผู้ใช้งานแก้ไขการ conflict นี้ให้สำเร็จโดยการรอให้ทำ git add อีกครั้ง

เมื่อเปิดไฟล์ที่บอกว่าเกิด conflict ก็จะเห็นเป็นแบบนี้

<<<<<<< HEAD
print("hello world")
===========
print("hello myself")
>>>>>>> feature/printer

หมายความว่า HEAD มีโค้ดเขียนว่า print("hello world")
และ feature/printer มีโค้ดเขียนว่า print("hello myself")

วิธีการแก้ไข

ต้องลบโค้ดอันใดอันหนึง (เช่นว่าเราเชื่อว่า HEAD มีโค้ดที่ผิด ก็จะลบเวอร์ชันของ HEAD ออก) เป็นดังนี้

print("hello world")

โดยไม่มี <<<<<<< HEAD หรีออันอื่นเหลืออยู๋

การทำแบบนี้ จะทำให้โค้ดกลับมาสู่จุดที่โค้ดสามารถรันได้เหมือนปกติ