การใช้งาน Git ผ่าน Remote Repository ร่วมกันนั้น ก่อนหน้านี้เราพูดถึงการทำงานแบบ Centralized Workflow ไปแล้ว ในคราวนี้จะพูดถึงการทำงานอีกลักษณะหนึ่ง ซึ่งก็ไม่ได้แตกต่างจาก Centralized Workflow นัก เพียงแต่ผู้พัฒนา พัฒนาโดยแตก Branch Feature บน local repository แล้วจึง merge แล้ว push ไปยัง Remote Repository

เริ่มต้นจากนักพัฒนามากกว่า 1 คน ที่ทำงานบน remote repository เดียวกัน เริ่มโดยการใช้คำสั่ง git clone เพื่อคัดลอกมาทำงานบน local repository

ตัวอย่างข้างล่างนี้ นักพัฒนาชื่อ Manee ได้สร้าง branch แยกออกมา เพื่อพัฒนาฟีเจอร์ใหม่ โดยตั้งชื่อ branch ที่สร้างนี้ว่า Manee-Feature ด้วยคำสั่ง

$ git checkout -b Manee-Feature master

เมื่อ Manee สร้าง branch สำหรับการพัฒนางานของตนเองขึ้นมา แล้วต้องการ push branch ที่สร้างขึ้นไปบน remote repository จึงใช้คำสั่ง

$ git push -u origin Manee-Feature

Manee เริ่มพัฒนาฟีเจอร์บน Manee-Feature branch ภายใต้ local repository

ในระหว่าง Chujai นักพัฒนาอีกท่านหนึ่งที่ทำงานบน remote repository เดียวกัน มีการพัฒนาความสามารถภายใต้โครงการนี้เช่นกัน แต่ Chujai ไม่ได้สร้าง feature branch แต่ใช้แนวคิด centralize workflow โดยเมื่อพัฒนาฟีเจอร์ของตน แล้ว push ไปยัง master branch ทันที

หลังจากที่ Manee พัฒนางานในส่วนของตนเสร็จสิ้น และต้องการ push งานของตน เข้าไปยัง remote repository แต่พบว่า ข้อมูลบน remote repository ได้ถูกแก้ไขไปก่อนหน้านี้โดย Chujai

เมื่อ Manee เห็นว่าข้อมูลใน master branch มีการแก้ไข จึงต้องใช้คำสั่ง git pull เพื่ออัปเดทข้อมูลบน master ก่อน โดยใช้คำสั่ง

$ git checkout master

เพื่อ switch ไปยัง master branch แล้วจึงคำสั่ง

$ git pull origin master

เพื่อดึงข้อมูลจาก master branch บน remote repository เพื่ออัปเดทข้อมูลให้เป็นปัจจุบัน

เมื่อจากนั้นหากคุณ Manee ต้องการ merge ทั้ง 2 branch เข้าด้วยกัน ให้ใช้คำสั่ง

$ git merge <ชื่อ branch>

เมื่อใช้คำสั่ง git pull เพื่อดึงข้อมูลล่าสุดมาแล้ว Manee จึงได้ใช้คำสั่ง

$ git merge Manee-Feature

เพื่อรวม Manee-Feature branch เข้ากับ master branch แล้วจึงใช้คำสั่ง

$ git push origin master

เพื่อ push ข้อมูลทั้งหมดไปยัง remote repository

จะเห็นว่าการพัฒนาในลักษณะ Feature Branch Workflow ที่ Manee เลือกใช้นั้น ช่วยลดปัญหาที่อาจจะเกิดขึ้นจากการเลือกใช้การพัฒนาในลักษณะ Centralize Workflow ตามที่ Chujai ใช้ในการ push ข้อมูล

ทั้งนี้ทั้งนั้น ก็ขึ้นอยู่กับรูปแบบและวิธีการพัฒนา ซึ่งตามแต่ความเหมาะสมในการทำงาน

Comments are closed.