Git คือไร
ตอนนี้เราจะลองสวมหมวกเป็นผู้พัฒนา digital product ท่านหนึ่ง
มี concept ข้อนึงที่มักจะใช้กันก็คือ “Continuous Improvement” หรือเรียกว่าการพัฒนาอย่างต่อเนื่อง ทีละเล็กทีละน้อย
เห็นได้จากการพัฒนาเวอร์ชันของ product ไปเรื่อยๆ เช่น 1.0.0 -> 1.10 -> 1.1.1
ซึ่งถ้า product นั้น เราทำคนเดียวก็อาจไม่มีปัญหาอะไร ทำเสร็จเมื่อไหร่ก็อัพเดตไปเรื่อยๆ
แต่ถ้าหากลองนึกภาพตาม ว่า product นั้นเป็น Facebook ซึ่งต้องใช้ผู้พัฒนาหลายหมื่นคน ความวุ่นวายก็คงจะเกิดขึ้นอย่างแน่นอน
ซึ่งพระเอกของเราก็คือ git ที่จะมาช่วยในเรื่องนี้ หรือ git มีชื่อเรียกอีกอย่างนึงว่า “Version Control” นั่นเองงง
ในแต่ละ version ของ product เราจะเรียกมันว่า “Commit” ลองดูรูปด้านล่างประกอบ

ในแต่ละ commit นั้นก็จะปรับปรุง product ของเราไปเรื่อยๆ เช่น แก้บัค, เพิ่ม feature
หรือมองได้อีกมุมว่า git มันคอยช่วยถ่ายภาพการเจริญเติบโตของ product เรา ซึ่งแต่ละรูปที่ถ่ายไว้ก็เหมือนกับ commit แต่ละอัน

Branches
เรารู้แล้วว่า product จะมีการพัฒนาอย่างต่อเนื่อง ทีนี้ปัญหาคือ เราจะพัฒนามันอย่างไรโดยไม่รบกวน product ตัวหลัก เพื่อป้องกันการเกิดปัญหาต่างๆ
ปัญหาที่เชื่อว่าทุกคนเคยเจอ คือเราทำรายงานใน Microsoft Word อยู่ แต่เผลอกดลบเนื้อหาแบบไม่ได้ตั้งใจ แล้วเผอิญกด save ด้วยความเคยชิน น้ำตาแทบไหล
วิธีการแก้ปัญหานี้ก็คืออ ตอนไหนที่เราต้องการพัฒนา product ของเรา ก็สร้าง branch แยกออกมาก่อนในอันดับแรก ตามตัวอย่างในรูปด้านล่าง

product ตัวหลักของเรา จะอยู่ใน branch ที่ชื่อว่า Master
ใน commit C จะมีคุณสมบัติเหมือน commit B ทุกอย่าง แต่แยกออกจากกันอย่างอิสระ เท่านี้เราก็สามารถพัฒนา product ของเราได้อย่างสบายใจแล้ว!
ประโยชน์ที่สำคัญของการแยกเป็น branch ต่างๆ ก็ช่วยให้ทีมของเรา scale product ตัวนี้ได้อย่างอิสระนั่นเองง

Merging
เมื่อ branch ที่เราแยกออกไปได้รับการพัฒนาจนพร้อมใช้งานแล้ว ก็สามารถทำสิ่งที่เรียกว่า “Pull Request” เพื่อส่งสิ่งที่เราทำขึ้นไปบน product ตัวหลักของเรา
ในรูปด้านล่าง จะส่ง commit C ที่เราได้เพิ่ม feature X เสร็จเรียบร้อย เข้าไปใน product ตัวหลักของเรา หรือเรียกว่าเป็นการส่งขึ้นไปใน master branch

ข้อดีอีกอย่างของ git คือ ถ้า commit C ที่มี feature ใหม่นั้นลูกค้าไม่ชอบ เราก็สามารถถอยกลับมาใช้ commit A หรือ B เป็น product เวอร์ชันล่าสุดของเราได้เล้ย
ขอบคุณเครื่องมือวาดรูปเท่ๆจาก Excalidraw



Leave a comment