We need to talk about git flow

Nattawat Songsom
2 min readMay 11, 2021

--

git flow เป็นหลักการในการจัดการ branch ใน git…

โดยแบ่ง branch เป็น 2 สายหลัก คือ

  • main branch
  • supporting branch

โดย main branch ประกอบด้วย

  • master = คืองานที่ขึ้น production จะมี version ในแต่ละ commit เช่น 1.0.1
  • develop = เอาไว้รวบรวม feature ต่างๆก่อนจะนำไป release เป็นครั้งๆไป

และ supporting branch ประกอบด้วย

  • feature
  • release
  • hotfix

ยกตัวอย่าง use case ดังนี้

  1. ต้องการพัฒนา feature ใหม่
  • เริ่มพัฒนา => แตก feature branch ออกมาจาก develop branch
  • พัฒนาเสร็จแล้ว => develop branch merge feature branch

2. อยาก release version ใหม่

  • เริ่มพัฒนา => แตก develop branch มาสร้าง release branch ใหม่ หรือ ให้ release branch merge develop branch ( ขึ้นอยู่กับการจัดการ version และ branch ) แล้วนำไป test ครั้งสุดท้ายก่อนขึ้น production ซะ
  • ถ้าเจอ bug ( test ไม่ผ่าน ) => แก้ bug ใน release branch เลย จากนั้นเมื่อแก้ bug เสร็จ ให้ develop branch merge release branch
  • เมื่อพร้อม release version ใหม่ ให้ master branch merge release branch พร้อมติดเลข tag version

3. ถ้าเจอ bug ใน production

  • เริ่มพัฒนา => แตก hotfix branch ออกมาจาก master branch มาเพื่อแก้บัค
  • เมื่อแก้บัคเสร็จ => ให้ master branch และ develop branch ทำการ merge hotfix branch โดย ติด tag version ใหม่ไปด้วย

use case หลักๆก็จะประมาณนี้ แต่ถ้ายังไม่มั่นใจ ว่า branch ไหน ทำอะไรกับ branch ไหนได้บ้าง มาลองดูตารางนี้กัน

การแตก branch
การ merge branch

อันนี้เป็นความเข้าใจของผม … ถ้าผิดพลาดประการใด ก็ขออภัยด้วยครับ ( บอกผมด้วย ผมจะได้แก้ใหม่ 5555 ) ขอบคุณครับ

--

--

No responses yet