Merge commit

#HelloGameDev #HelloErmine #HelloWorld2021

ในส่วนของ merge commit นั้นจะเป็นยกตัวอย่างกรณีจริงที่มักเกิดขึ้นเมื่อมีคนกลุ่มหนึ่งลงมือทำโค้ดร่วมกัน

โดยสมมติว่านาย A กับนาย B เขียนโค้ดด้วยกันอยู่ และทั้งคู่ก็เขียนโค้ดที่อยู่ในไฟล์เดียวกัน ดังรูปตัวอย่าง

นาย A เพิ่ม method2 ต่อท้าย method1 ส่วนนาย B ลบ method1 ออก แล้วเพิ่ม method3 กับ method4 เข้าไป

นาย B เขียนโค้ดเสร็จแล้ว ก็เลย commit ไฟล์ที่ตัวเองเขียนเสร็จแล้ว push ขึ้น Remote repository

นาย B ทำการ Push ข้อมูลขึ้น Remote repository ก่อนนาย A

ส่วนนาย A ที่เขียนโค้ดเสร็จทีหลังและเตรียมจะ push ขึ้น Remote repository กลับพบว่านาย B ได้ push ขึ้นไปก่อนหน้านั้นแล้ว ทำให้เขา push ตามขึ้นไปในทันทีไม่ได้

“Push ก่อนได้เปรียบ” นาย B ไม่ได้กล่าวไว้

ดังนั้น สิ่งที่นาย A ต้องทำก่อนที่จะ push ของตัวเองขึ้นไปได้ ก็คือจะต้อง pull จาก Remote repository ลงมาใหม่ก่อนเพื่ออัปเดต commit ที่นาย B ได้ push ขึ้นไป ซึ่งเราเรียกขั้นตอนนี้ว่า merge commit นั่นเอง

Merge Commit : เมื่อมีคนอื่นชิง Push ก่อนหน้าแล้วเราต้อง Pull มาใหม่เพื่ออัปเดตของตัวเองก่อนส่งตามหลัง

จากตัวอย่าง จะเห็นว่าโค้ดของนาย A และ B แก้ที่บรรทัดเดียวกัน แต่โค้ดออกมาไม่เหมือนกัน ในจุดนี้ก็จะเป็นผลต่อเนื่องไปสู่อีกหนึ่งปัญหาพื้นฐานที่ Developer ควรรู้นั่นเอง (ซึ่งส่วนนี้จะมีการอธิบายในหัวข้อ conflict ต่อไป)

นอกจากนี้ยังพบในกรณีที่โค้ดสามารถ merge ได้ปกติ เช่น

เมื่อ merge เข้าด้วยกัน จะได้ผลลัพธ์ออกมาเป็นแบบนี้

ซึ่งถือเป็นหนึ่งในกรณีที่โค้ดสามารถ merge รวมกันได้โดยไม่มีปัญหาอะไร และเมื่อ merge เสร็จแล้วก็จะกลายเป็น commit ตัวหนึ่งที่ให้เราเก็บไว้และ push ขึ้น Remote repository

Last updated

Was this helpful?