Naruepat.com
  • Home
  • Lifestyle
  • Travel
    • Eat
      • Chiang Mai
  • E-Commerce
  • Social Media
  • Programming
    • Knowledge
    • 3rd Party
    • Laravel
      • Resolve
      • Packages
  • About Me

มาใช้ GitFlow กันดีกว่า หมดปัญหากับการแตก Branch ใน Git ที่สับสนจนเกิด Conflict

Naruepat Payachai/21 Jun, 17/3,680/0
KnowledgeTools

สำหรับ Developer ทั้งหลาย ทุกคนคงจะคุ้นเคยและใช้งาน Git กันมาบ้างหรือใช้กันอยู่เป็นประจำ ซึ่งถ้าหากใครที่ใช้ Git อยู่น่าจะเคยเจอปัญหาเหมือนๆ กันแน่นอน ก็คือ ไม่รู้ว่าจะแตก Branch ยังไงดี? หรือ Branch ที่แตกออกมาแล้วควรจะ Merge กลับไปที่ไหนก่อน? ถ้า Merge ผิดอาจจะเกิด Conflict ได้ และอีกปัญหาสารพัดที่น่าจะเจอกันมากมาย ซึ่งบทความนี้ผมเลยอยากแนะนำ Git Workflow ที่มีชื่อว่า GitFlow ที่สามารถนำมาเป็นรูปแบบในระหว่างที่เราใช้ Git มาช่วยเก็บ Source code ระหว่างพัฒนากันได้อย่างลงตัวมากขึ้น

GitFlow คืออะไร?

GitFlow เป็นรูปแบบการแตก Branch อย่างหนึ่งเมื่อใช้ Git คิดค้นโดย Vincent Driessen โดยได้รับความสนใจอย่างมากจากนักพัฒนาทั้งหลาย เพราะว่ามันเหมาะกับการนำมาใช้ในการทำงานร่วมกันกับทีมและลดความสับสนได้เป็นอย่างดี

สำหรับ GitFlow จะใช้ความสามารถของ Branch ให้เป็นประโยชน์ โดยจะแบ่งส่วนที่เข้าใจได้ง่ายๆ ออกมาเป็น 5  ส่วนหลักๆ เพื่อแยกสายการทำงานออกมาอย่างชัดเจนในแต่ละขั้นตอน จะช่วยลดปัญหาว่าเราจะแตก Branch ชื่อว่าอะไรดี? เราควรจะ Merge Branch นี้เข้าไปที่ไหนต่อ? เราจะทำยังไงเพื่อลดการ Conflict ให้มากที่สุด? และเมื่อมีคนมาทำงานร่วมกับเราจะเป็นมาตรเดียวกันที่อธิบายหรือสอนได้ง่ายๆ เพื่อให้ระหว่างการที่ทีมพัฒนา สามารถบริการจัดการ Branch ตอนทำงานด้วย Git เป็นไปอย่างสมบูรณ์ที่สุด

Main Branches สายหลักที่ต้องมี

สำหรับ Branch หลัก สิ่งที่จะต้องมีตลอดการทำงาน จะมีสองสายหลักนี้ก็คือ

  • master
  • develop

เราจะนำ origin/master มาใช้เป็น Branch หลักและใช้สำหรับ Production อยู่เสมอ
เราจะนำ origin/develop มาใช้เป็น Branch สำหรับการพัฒนาฟีเจอร์ใหม่ๆ อยู่เสมอ

Supporting Branches สายสนับสนุนที่ต้องรู้ว่าคืออะไร

ถัดจาก Main Branches develop และ master แล้วนั้น ยังมีอีกส่วนที่จะเป็น Supporting Branches เพื่อช่วยสนับสนุนการพัฒนาแบบขนานระหว่างการทำงานได้เป็นอย่างดี โดยมีดังนี้

  • Feature branches
  • Release branches
  • Hotfix branches

ส่วนสนับสนุนนี้ จะต้องมีการแตก Branch ออกมาจากสายหลักและ Merge เข้ากับสายหลักที่ถูกต้องเพื่อจะช่วยให้การทำงานเกิดการ conflict น้อยที่สุด

GitFlow ทำงานอย่างไร?

Feature Branches จงระลึกอยู่เสมอว่าจะต้องแตก Branch มาจาก develop และ Merge กลับไปที่ develop อยู่เสมอ เมื่อไหร่ที่เราเริ่มต้นการพัฒนา หรือมี Feature ใหม่ๆ ที่ต้องการทำที่อาจต้องใช้ระยะเวลาโดยประมาณ เราจะมาทำงานกันในส่วนนี้มากที่สุด

 

ต่อมาเมื่อ Dev คนไหนที่ทำงานใน Feature ที่ตัวเองรับไปเสร็จ ก็จะทำการ Merge Branch กลับมายัง develop branch

 

Release branches สำหรับส่วนนี้จะเป็นการรวม features ทั้งหมดใน develop branch ก่อนจะนำไป Online Production จริง เมื่อไหร่ที่ release branch เกิดบัค เราก็จะแก้ไขบัคนั้นใน release branch ทันที จนกว่าสามารถทำงานได้สมบูรณ์ที่สุด และหลังจากนั้นจะทำการ Merge Release Branch ไปยัง develop และ master พร้อมกับติด Tag version

Hotfix branches ในส่วนนี้ เมื่อไหร่ที่มี Critical Bug หรือปัญหาต่างๆ ที่มีเจอจาก Production เราจะทำการแตก Branch มาจาก Master เพื่อแก้ไขโดยด่วน เมื่อไหร่ที่แก้ไขเสร็จแล้วจะถูก Merge ไปยัง develop และ master ทันทีพร้อมกับติด Tag version

 

เห็นไหมครับว่าจริงๆ แล้วเมื่อไหร่ที่เรามีรูปแบบการทำงานที่เข้าใจกันได้ง่าย ก็จะสามารถช่วยให้เราทำงานได้ดีขึ้น ใครจะนำไปลองใช้ดูก็ได้นะครับ แต่ถ้าหากใครคิดว่ายังงงๆ อยู่ บทความต่อไป เดี๋ยวผมจะมาแนะนำ Tools สำหรับใช้งาน GitFlow ใน SourceTree กัน แล้วจะรู้ว่าสวรรค์ของการใช้ Git มันมีอยู่จริง ขอบคุณที่สละเวลาอ่านกันนะครับ หวังว่าจะเป็นประโยชน์กับ Developer ทุกคนนะครับ

ตัวอย่างการใช้ Git Flow ใน SourceTree

Sources

  • datasift.github.io
  • nvie.com

Comments

gitgitflowworkflow
Naruepat Payachai
Naruepat Payachai (Set) - Senior Supervisor Software Engineer & Full stack Web/eBusiness Developer & Digital Marketer นอกจากชอบเขียนเว็ปแล้ว ผมยังชื่นชอบ Gadgets IT ต่างๆ และเวลาว่างๆ ก็ชอบออกไปเที่ยวเพื่อพักผ่อนและหาอะไรใหม่ๆ ให้กับชีวิตอยู่เสมอ

Related Posts

Social Media

Facebook feature usage limits ข้อจำกัดต่างๆ ของเฟสบุ๊ค

Knowledge

เคล็ดไม่ลับ ต่ออายุโดเมน Godaddy ในราคาถูกโดยไม่ต้องใช้ค...

LifestyleTravel

เที่ยวถ่ายรูปดอก “พญาเสือโคร่ง” ที่โรงเรียนบ...

Popular Posts

Social Media

ลบเพื่อนใน Facebook ง่ายๆ เร็วๆ ด้วย Chrome Extension กั...

Lifestyle

14km กับการถ่าย “พรีเวดดิ้ง แนวสตรีท” ของผมท...

Social Media

ชวนเพื่อนทั้งหมดมากด Like Facebook Fanpage ด้วยวิธีง่ายๆ

Lifestyle

923 วัน กับความทรงจำดีๆ ที่ THiNKNET Co., Ltd.

หมวดหมู่

  • E-Commerce (7)
  • Eat (1)
    • Chiang Mai (1)
  • Lifestyle (15)
  • Programming (13)
    • 3rd Party (1)
    • Knowledge (6)
    • Laravel (4)
      • Packages (1)
      • Resolve (1)
    • Tools (3)
  • Social Media (5)
  • Travel (6)

เรื่องล่าสุด

  • Facebook feature usage limits ข้อจำกัดต่างๆ ของเฟสบุ๊ค
  • เคล็ดไม่ลับ ต่ออายุโดเมน Godaddy ในราคาถูกโดยไม่ต้องใช้คูปองส่วนลด
  • เที่ยวถ่ายรูปดอก “พญาเสือโคร่ง” ที่โรงเรียนบรรพตวิทยา ดอยผาตั้ง อ.เวียงแก่น จ.เชียงราย
  • สรุปเรื่องราวชีวิตของตัวเอง เก็บความทรงจำดีๆ ที่ผ่านมาตลอดปี 2560
  • ซื้อบ้านครั้งแรกในชีวิต จะต้องเตรียมตัวอย่างไรบ้าง??

Follow Us

Tags

CAMP DIY E-Commerce file manager Framework image resize image upload Introduction Laravel package PHP seo slug startup THiNKNET tools url friendly watermark web 2.0 web 3.0 will you marry me การพัฒนาเว็บไซต์ การเริ่มต้น การใช้ชีวิต ของชำร่วย ขอแฟนแต่งงาน ข้อคิด จัดการไฟล์ ตลาดในประเทศไทย ถ่ายรูป ที่พัก พนักงานออฟฟิศ พรีเวดดิ้ง ย้ายงาน ลาออก วิเคราะห์ สตรีท อัพโหลดรูป เก็บรูปภาพ เซอร์ไพรส์ เตรียมงาน เทคนิคขายของ เริ่มต้นขายของออนไลน์ แคมป์ แต่งงาน

About US

I'm Naruepat Payachai

ผมรักการเขียนโค้ดเป็นชีวิตจิตใจตั้งแต่เรียนจบมหาวิทยาลัย พร้อมกับทำงานในสายนี้หลายปี นอกจากเป็น Web Programmer แล้ว ก็ยังชอบ E-Commerce เป็นอย่างมาก และเวลาว่างๆ ผมก็ชอบไปท่องเที่ยวสถานที่ต่างๆ เพื่อพักผ่อนและหาไอเดียร์ใหม่ๆ มาใช้กับการทำงาน

ซึ่งผมเลยอยากเก็บประสบการณ์ ความรู้ และสิ่งที่ผมสนใจมาเก็บไว้ในบล็อกนี้ อย่างน้อยในอนาคตเราก็จะได้ย้อนกลับมาดูว่า ที่ผ่านมาเราทำอะไรไปบ้าง

Recent Posts

Facebook feature usage limits ข้อจำกัดต่างๆ ของเฟส...

01 Mar, 19

เคล็ดไม่ลับ ต่ออายุโดเมน Godaddy ในราคาถูกโดยไม่ต้...

22 Jan, 18

เที่ยวถ่ายรูปดอก “พญาเสือโคร่ง” ที่โรง...

21 Jan, 18

สรุปเรื่องราวชีวิตของตัวเอง เก็บความทรงจำดีๆ ที่ผ่...

31 Dec, 17

Instagram

Copyright © 2016 Naruepat.com.