Git Flow

#HelloGameDev #HelloErmine #HelloWorld2021

คือ หนึ่งในมาตรฐานที่กำหนดรูปแบบของการแตก branch ให้เป็นระบบระเบียบเพื่อตอบโจทย์ใน Development process โดยแบ่ง branch ออกเป็น 5 กลุ่มใหญ่ ๆ ดังนี้

  • master

  • develop

  • feature

  • release

  • hotfix

และขั้นตอนการเขียนโค้ดทั้งหมดจะอยู่ใน develop และ feature เสมอ โดยช่วงเริ่มต้นขึ้นโครงโปรเจคอาจจะทำใน develop แต่เมื่อโค้ดพื้นฐานพร้อมแล้ว ก็แยก branch ตาม Feature เพื่อเขียนโค้ด ซึ่งก็คือ branch ที่ชื่อว่า feature นั่นเอง

สำหรับ develop นิยมมีเพียง branch เดียว แต่สำหรับ feature จะแยกเป็น sub branch โดยใช้ชื่อตาม Feature นั้น ๆ

develop มีตัวเดียว แต่ feature จะแยกเป็น Sub Branch โดยใช้ชื่อตาม Feature นั้น ๆ

เมื่อพัฒนา feature ไหนเสร็จและพร้อมจะ release ก็จะ merge เข้าไปใน develop เลย ส่วน feature ที่ยังไม่พร้อม release ก็ปล่อยไว้อย่างนั้นก่อน

โดย Merge Branch แบบนี้ใน Git flow จะเรียกว่า Finish Branch

เมื่อถึงเวลาอันสมควรที่จะ release เพื่อเตรียมขึ้น production แล้ว ก็จะแตก branch ออกมาเป็น release โดยมี sub branch เป็นชื่อเวอร์ชันที่ต้องการ

แตก release ออกจาก develop พร้อมตั้งชื่อเวอร์ชัน

ซึ่งการแตกเข้าสู่ release นี้มีไว้เพื่อให้ QA/Tester ทำการทดสอบโปรแกรมของเราให้ผ่านก่อนที่จะขึ้น production นั่นเอง ดังนั้น ถ้ามี issue เกิดขึ้นระหว่างนี้ก็ต้องแก้ไขภายในส่วนนี้ให้เรียบร้อยก่อน และเมื่อผ่านมาตรฐานของ QA/Tester เรียบร้อยแล้ว ก็ถึงเวลาเตรียมพร้อมเข้าสู่ master

เอาโค้ดจากใน master ไปขึ้น Production ได้แล้ววว

หลังจากนำโค้ดจากใน master ไปขึ้น production ได้แล้ว ต่อมา...สำหรับการ finish branch ของ release จะต้อง merge เข้า master และ develop ทุกครั้ง ส่วนสาเหตุที่ต้อง merge เข้า develop ด้วยก็เพราะว่ามันมักมีโค้ดที่แก้ issue ในระหว่างการทดสอบของ QA/Tester เพิ่มเข้ามา

จะเห็นว่าที่ master นั้นจะเป็นโค้ดที่สมบูรณ์ที่สุด (ของเวอร์ชันนั้น ๆ) และไม่มีการ commit เข้าไปตรง ๆ เพราะมาจากการ merge ของ release เท่านั้น ดังนั้น master จึงมีแต่โค้ดที่เสร็จสมบูรณ์ ทำให้เวลา rollback แบบกะทันหันก็สามารถทำได้ โดยไม่ต้องกังวลว่าจะมีปัญหาอะไรหรือไม่

และในกรณีที่ production ตัวล่าสุดเกิด critical issue (ปัญหาหนัก ๆ) ขึ้นมา แต่ไม่ถึงกับต้อง rollback ก็จะมี hotfix เพื่อเข้ามาแก้ปัญหานี้ให้โดยเฉพาะ

hotfix : เมื่อต้องการแก้ bug แบบด่วนจี๋!

ส่วนหน้าที่ของ hotfix ก็ตามชื่อของมัน คือมีไว้แก้ bug บน production แบบเร่งด่วน โดย hotfix จะมี sub branch เป็นชื่อเวอร์ชัน (ซึ่งนิยมเปลี่ยนเฉพาะเลขของ Patch version)

เมื่อแก้ไขเสร็จแล้วก็จะ merge เข้าสู่ master และ develop เหมือนกับ release

และนี่ก็คือรูปแบบทั้งหมดของ Git flow ที่ถูกออกแบบมาให้ตอบโจทย์ในการพัฒนาโปรเจคใหญ่ ๆ โดยจะเห็นว่า Git flow จะช่วยให้เขียนโค้ดไม่ซับซ้อนวุ่นวาย บริหารและจัดการ feature ต่าง ๆ ได้ง่าย รองรับ process ที่ต้องผ่าน QA/Tester ก่อนจะขึ้นสู่ production และสามารถตอบโจทย์สำหรับการรับมือกับ issue ต่าง ๆ ที่สามารถเกิดขึ้นได้ตลอดเวลาอีกด้วย

เพิ่มเติม — Git flow อาจจะดูวุ่นวายตอนที่สร้าง branch ต่าง ๆ ตามที่กำหนดไว้ แต่ในความเป็นจริง ใน Git GUI หลาย ๆ ตัวนั้นมีตัวช่วยสร้าง Git flow ให้ง่ายขึ้นด้วย เพียงแค่กดไม่กี่ครั้งและตั้งชื่อเท่านั้นเอง

สร้าง Git Flow ใน Git GUI

Last updated

Was this helpful?