We need to talk about git flow
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 ดังนี้
- ต้องการพัฒนา 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 ไหนได้บ้าง มาลองดูตารางนี้กัน
อันนี้เป็นความเข้าใจของผม … ถ้าผิดพลาดประการใด ก็ขออภัยด้วยครับ ( บอกผมด้วย ผมจะได้แก้ใหม่ 5555 ) ขอบคุณครับ