Conflict
#HelloGameDev #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
#HelloGameDev #HelloErmine #HelloWorld2021
Last updated
Was this helpful?
จากตัวอย่างก่อนหน้านี้ ในขณะที่กำลัง merge อยู่นั้น จะเห็นว่าระหว่างโค้ดของนาย A และนาย B มีการแก้โค้ดที่จุดเดียวกัน ดังนั้น Git จะแจ้งว่าเกิด conflict หรือก็คือโค้ดที่ทับซ้อนกันนั่นเอง
ซึ่งนาย A ก็ต้องแก้ conflict นี้ให้เรียบร้อยถึงจะ merge commit แล้ว push ขึ้น Remote repository ได้ ซึ่งตอนที่เกิด Conflict แล้วเปิดโค้ดดังกล่าวขึ้นมา ก็จะเป็นแบบนี้
โดยสังเกตรูปแบบของเครื่องหมาย <<<, === และ >>> ให้ดี ๆ แล้วจะเห็นว่าจริง ๆ มันมีรูปแบบที่เข้าใจได้ง่ายมาก โดยที่
โค้ดที่อยู่ระหว่าง <<< และ === คือ โค้ดของนาย A
โค้ดที่อยู่ระหว่าง === และ >>> คือ โค้ดของนาย B
ตัวเลขต่อท้าย คือ หมายเลขของ commit ที่ทำการ merge
เพื่อให้โค้ดทำงานได้เหมาะสม นาย A ก็จะต้องเอาโค้ดที่ตัวเองแก้ไข ไปรวมกับโค้ดของนาย B ให้ทำงานได้
เมื่อเสร็จแล้วก็ให้ commit (ซึ่งจะเป็นการ merge commit) อีกครั้ง นาย A ก็จะสามารถ push ขึ้น Remote repository ได้แล้ว (โดยนาย B ก็ต้อง pull commit ตัวนี้ภายหลังเช่นกัน และถ้าทั้งคู่บังเอิญไปแก้ไขข้อมูลที่เดิมซ้ำอีกก็อาจจะเกิด conflict ได้)
ดังนั้น conflict ถือว่าเป็นเหตุการณ์ที่เกิดขึ้นได้เป็นปกติ โดยเฉพาะอย่างยิ่งโปรเจคขนาดใหญ่ที่มี Developer หลาย ๆ คนช่วยกันร่วมเขียนโค้ด การแก้ conflict จึงเป็นหนึ่งในพื้นฐานของการใช้งาน Git ที่ Developer ต้องเข้าใจและจัดการกับมันได้ ไม่เช่นนั้นจะเกิดปัญหา เช่น เผลอไปลบโค้ดของเพื่อนโดยไม่สนใจอะไรเพื่อให้ conflict หายไป เป็นต้น
pull จาก Remote repository ลงเครื่องตัวเอง
conflict เกิดขึ้น
ปรับแก้ไขโค้ดให้เหมาะสม
merge commit
push ขึ้น Remote repository