ข้ามไปที่เนื้อหา

Git Flow

Git Flow คือกระบวนการทำงาน manage source branch อย่างมีระบบ มีการใช้งานระบบ pull request สำหรับการ merge code ประกอบการ review code และมีการวาง branch policy ป้องกันการแก้ไขใน branch master และ develop

Git flow

Git flow chart ภาพจาก https://www.campingcoder.com/2018/04/how-to-use-git-flow/

Branch management

การจัดการ branch จะมีหลักการดังนี้

  • master branch ใช้สำหรับการเก็บ code ที่กำลังทำงานอยู่บน Production site จะต้องป้องกันการแก้ไข สามารถแก้ไขได้โดยการทำ pull request เข้าอย่างเดียว
  • develop branch ใช้สำหรับการพัฒนาในแต่ phase เช่น มีโครงการพัฒนาใน feature a, b, c ก็จะ add branch from master ที่เป็น production ล่าสุดมา หลังจากพัฒนา feature a, b, c เสร็จแล้วก็จะทำ pull request ขึ้นไปยัง master branch เพื่ออัพเดตปรับ version
  • develop/feature... branch ใช้สำหรับการพัฒนา feature นั้น ๆ โดยเฉพาะ
  • develop/feature.../part... (optional) ถ้ามีการพัฒนาหลายคนแนะนำให้แยก branch ทำงานเพื่อป้องกันการเกิด conflict
  • hotfix/problem... branch ใช้สำหรับการแก้ไข bug ไม่ว่าจะเป็น bug จาก Production site หรือจาก develop branch เมื่อแก้ไขเสร็จสิ้นก็จะทำ pull request กลับไปยังต้นทาง

Branch policy

จะต้องมีการตั้งค่า Branch master และ develop ให้ไม่สามารถ commit หรือ push code ได้ จะอนุญาตโดยการทำ pull request อย่างเดียว

Pull request

ทุกครั้งที่พัฒนาจบ feature หรือจบ task ให้ทำการสร้าง pull request merge ไปยังชั้นที่สูงกว่า 1 ระดับ ในขั้นตอนการสร้าง pull request จะต้องเขียน Changelog ที่เกิดขึ้นและ link กับ Work Item ทุกครั้ง

เมื่อ pull request มีสถานะ completed จะต้องเลือกวิธีการ Merge เป็น Squash Commit และทำการ delete source branch ทิ้ง

Code review (optional)

ในระหว่างขั้นตอนการสร้าง Pull request สามารถกำหนด Approval ได้ ซึ่งจะเชื่อมโยงกับการตั้งค่า Branch policy ว่าจะต้องมีผู้ Review ขั้นต่ำกี่ท่าน เป็นใครบ้าง ขั้นตอนนี้จะช่วยให้ code ที่ออกมาจาก developer หลาย ๆ ท่านออกมาในมาตรฐานเดียวกันและมีความ clean

เมื่อ pull request มีสถานะ merged แล้ว pipeline ที่ setup ไว้ให้ trigger pipeline ให้ทำงานทุกครั้งที่ code ใน branch นั้นๆเกิดความเปลี่ยนแปลง