การที่นักพัฒนาหลายๆ คนใช้งาน Git บน Repository เดียวกัน สามารถทำได้ โดยกระบวนการหนึ่งเราเรียกว่า การทำงานแบบ Centralized Workflow

ตัวอย่างที่จะแสดงนี้ มีนักพัฒนา 3 คน ที่ทำงานบน Remote Repository เดียวกัน โดยทั้ง 3 คน ได้ใช้คำสั่ง git clone เพื่อนำ Remote Repository มาคัดลอกเป็น Local Repository เพื่อทำงานในเครื่องตนเอง

เริ่มต้นตัวอย่างโดย Manee ได้มีการเพิ่มข้อมูล ลงใน Local Repository แล้วใช้คำสั่ง commit ตามปกติ

หลังจากนั้น Manee ได้ใช้คำสั่ง push เพื่อนำข้อมูลนี้ไปเก็บน Remote Repository ด้วยคำสั่ง

$ git push origin master

จากนั้นนักพัฒนาอีกคนหนึ่งชื่อ Chujai ได้มีการแก้ไข ข้อมูลบน Local Repository ที่ clone มาจาก Git Repository เดียวกัน

แต่เมื่อ Chujai ได้ใช้คำสั่ง push เช่นเดียวกับ Manee แต่พบกับปัญหาว่า ไม่สามารถ push ข้อมูลของตนได้ เนื่องจาก Remote Repository ได้มีข้อมูลจาก Manee ที่ส่งขึ้นไปก่อนหน้านี้ โดยระบบจะแจ้งว่ามีข้อมูลพื้นฐานไม่ตรงกัน ไม่สามารถ push ได้

ในส่วนนี้ Chujai จะต้องใช้คำสั่ง git pull เพื่อทำการดึงข้อมูลลงมาก่อน โดยในที่นี้เราจะใช้คำสั่ง

$ git pull --rebase origin master

จากคำสั่งข้างต้น เหตุผลที่จำเป็นต้องใส่ option --rebase เพื่อให้ข้อมูลที่ pull  ลงมานั้น ไปสร้างเป็น branch ใหม่ก่อน เพื่อป้องกันการ conflict ของข้อมูลที่อาจจะเกิดขึ้นได้

จากนั้นหากต้องการรวมทั้ง 2 branch เข้าด้วยกัน ก็สามารถใช้คำสั่ง git merge ได้ในภายหลัง

ข้อมูลของทั้ง Manee และ Chujai ก็จะถูกนำไปรวมกันบน Remote Repository

นักพัฒนาอีกท่านหนึ่งที่ชื่อ Mana ก็สามารถใช้คำสั่ง git pull เพื่อดึงข้อมูลลงมา

หากลองตรวจสอบ log ดูด้วยคำสั่ง

$ git log -p

ก็จะเห็นรายละเอียดเกี่ยวกับข้อมูลที่ commit และ push ขึ้นไป โดยจะเห็นรายละเอียดของนักพัฒนาที่เป็นคน commit ข้อมูลส่วนนั้นๆ ด้วย

การทำงานแบบ Centralized Workflow ที่กล่าวมาข้างต้นนั้น เพื่อให้เห็นภาพการทำงานได้อย่างชัดเจน จะอธิบายได้ดังรูปภาพด้านล่างนี้ครับ

Comments are closed.