ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การใช้ Branching: สร้าง Branch และ Merge

บทความนี้อธิบายถึงการใช้ Branching ใน Git ซึ่งเป็นเครื่องมือสำคัญสำหรับการพัฒนา Feature ใหม่, แก้ไข Bug หรือทดลองไอเดีย โดยไม่กระทบกับ Code หลักของโปรเจกต์ (mai...

การใช้ Branching: สร้าง Branch และ Merge

ในบทที่แล้ว เราได้เรียนรู้พื้นฐานการใช้งาน Git ในการจัดการ Source Code ของโปรเจกต์ PHP ของเรา ตั้งแต่การสร้าง Repository, การ Commit การเปลี่ยนแปลง, และการ Push ไปยัง Remote Repository ในบทนี้ เราจะมาเรียนรู้เรื่อง Branching ซึ่งเป็นหนึ่งในคุณสมบัติที่ทรงพลังที่สุดของ Git ที่ช่วยให้เราสามารถพัฒนา Feature ใหม่ๆ หรือแก้ไข Bug โดยไม่กระทบกับ Code หลักของโปรเจกต์

Branch คืออะไร?

Branch ใน Git เปรียบเสมือน เส้นทางการพัฒนา (Development Path) ที่แยกออกมาจากเส้นทางหลัก (Main Branch) ซึ่งโดยทั่วไปจะเรียกว่า main หรือ master เมื่อเราสร้าง Branch ใหม่ เรากำลังสร้างสำเนาของ Code ในขณะนั้น และสามารถทำการเปลี่ยนแปลงบน Branch นั้นได้โดยอิสระ โดยไม่มีผลกระทบต่อ Branch อื่นๆ

ทำไมต้องใช้ Branch?

  • พัฒนา Feature ใหม่: สร้าง Branch สำหรับพัฒนา Feature ใหม่โดยเฉพาะ ทำให้ Code หลักยังคง Stable และพร้อมใช้งาน
  • แก้ไข Bug: สร้าง Branch เพื่อแก้ไข Bug โดยเฉพาะ ทำให้มั่นใจได้ว่าการแก้ไข Bug จะไม่ทำให้เกิดปัญหาใหม่ใน Code หลัก
  • ทดลองไอเดียใหม่ๆ: สร้าง Branch เพื่อทดลองไอเดียใหม่ๆ โดยไม่ต้องกังวลว่าจะทำให้ Code หลักเสียหาย
  • ทำงานร่วมกัน: สมาชิกในทีมแต่ละคนสามารถทำงานบน Branch ของตัวเองได้ โดยไม่รบกวนการทำงานของคนอื่น

การสร้าง Branch

การสร้าง Branch ใหม่ใน Git ทำได้ง่ายมาก โดยใช้คำสั่ง git branch ตามด้วยชื่อ Branch ที่ต้องการสร้าง ตัวอย่างเช่น หากเราต้องการสร้าง Branch ชื่อ feature/add-user-profile เพื่อพัฒนา Feature เพิ่ม User Profile เราสามารถทำได้ดังนี้:

git branch feature/add-user-profile

คำสั่งนี้จะสร้าง Branch ใหม่ชื่อ feature/add-user-profile แต่เรายังคงอยู่ที่ Branch เดิม (เช่น main หรือ master) เพื่อที่จะเริ่มทำงานบน Branch ใหม่ เราต้องทำการ Switch ไปยัง Branch นั้น

การ Switch Branch

การ Switch Branch คือการเปลี่ยนไปทำงานบน Branch ที่เราต้องการ โดยใช้คำสั่ง git switch ตามด้วยชื่อ Branch ที่ต้องการ Switch ไป ตัวอย่างเช่น:

git switch feature/add-user-profile

เมื่อเรา Switch Branch สำเร็จ Git จะทำการ Update Working Directory ของเราให้ตรงกับ Code ใน Branch ที่เรา Switch ไป และ Terminal ของเรามักจะแสดงชื่อ Branch ปัจจุบันที่เรากำลังทำงานอยู่

นอกจากนี้ เรายังสามารถสร้าง Branch และ Switch ไปยัง Branch นั้นได้ในขั้นตอนเดียว โดยใช้คำสั่ง git switch -c (-c ย่อมาจาก --create) ตัวอย่างเช่น:

git switch -c feature/add-user-profile

คำสั่งนี้จะสร้าง Branch ใหม่ชื่อ feature/add-user-profile และ Switch ไปยัง Branch นั้นทันที

Workflow การทำงานกับ Branch

โดยทั่วไป Workflow การทำงานกับ Branch จะเป็นดังนี้:

  1. สร้าง Branch ใหม่ (เช่น feature/add-user-profile)
  2. Switch ไปยัง Branch ใหม่
  3. ทำการเปลี่ยนแปลง Code บน Branch ใหม่
  4. Commit การเปลี่ยนแปลง
  5. Push Branch ใหม่ไปยัง Remote Repository (ถ้าต้องการให้คนอื่นเห็น)
  6. เมื่อ Feature เสร็จสมบูรณ์ หรือ Bug ได้รับการแก้ไข ให้ทำการ Merge Branch กลับไปยัง Branch หลัก (เช่น main หรือ master)

การ Merge Branch

การ Merge Branch คือการรวมการเปลี่ยนแปลงจาก Branch หนึ่ง (เช่น feature/add-user-profile) กลับไปยัง Branch อื่น (เช่น main หรือ master) ก่อนที่จะทำการ Merge เราต้อง Switch ไปยัง Branch ที่เราต้องการ Merge เข้าไปก่อน ตัวอย่างเช่น หากเราต้องการ Merge Branch feature/add-user-profile กลับไปยัง main เราต้องทำดังนี้:

git switch main
git merge feature/add-user-profile

คำสั่ง git merge จะพยายามรวมการเปลี่ยนแปลงจาก feature/add-user-profile เข้าไปยัง main โดยอัตโนมัติ หาก Git สามารถรวมการเปลี่ยนแปลงได้โดยไม่มีปัญหา เราก็สามารถ Commit การ Merge ได้เลย

git commit -m "Merge feature/add-user-profile"

Conflict คืออะไร?

บางครั้ง Git อาจไม่สามารถรวมการเปลี่ยนแปลงได้โดยอัตโนมัติ ซึ่งจะเกิดสิ่งที่เรียกว่า Conflict Conflict เกิดขึ้นเมื่อมีการเปลี่ยนแปลง Code ในบรรทัดเดียวกันในทั้งสอง Branch Git จะแจ้งให้เราทราบว่ามี Conflict และให้เราทำการแก้ไข Conflict ด้วยตนเอง

การแก้ไข Conflict

เมื่อเกิด Conflict Git จะใส่เครื่องหมายพิเศษ (เช่น <<<<<<<, =======, >>>>>>>) ในไฟล์ที่มี Conflict เพื่อให้เราเห็นว่ามีการเปลี่ยนแปลงอะไรบ้าง เราต้องทำการแก้ไข Code โดยเลือกเอา Code ที่ถูกต้อง หรือรวม Code จากทั้งสอง Branch เข้าด้วยกัน จากนั้นลบเครื่องหมายพิเศษเหล่านี้ออก และ Save ไฟล์

หลังจากแก้ไข Conflict เสร็จสิ้น ให้ใช้คำสั่ง git add เพื่อ Mark ว่าไฟล์นั้นได้รับการแก้ไขแล้ว และ Commit การ Merge

git add .
git commit -m "Merge feature/add-user-profile (resolved conflicts)"

การลบ Branch

เมื่อเรา Merge Branch เรียบร้อยแล้ว เราสามารถลบ Branch ที่ไม่ได้ใช้งานแล้วได้ เพื่อให้ Repository ของเราสะอาดและเป็นระเบียบ การลบ Branch ทำได้โดยใช้คำสั่ง git branch -d (-d ย่อมาจาก --delete) ตัวอย่างเช่น:

git branch -d feature/add-user-profile

หาก Branch นั้นยังไม่ได้ Merge Git จะไม่ยอมให้เราลบ Branch นั้น แต่เราสามารถบังคับให้ลบได้ โดยใช้คำสั่ง git branch -D (ตัวพิมพ์ใหญ่ D หมายถึง Force Delete) แต่ควรใช้ด้วยความระมัดระวัง เพราะข้อมูลอาจสูญหายได้

สำหรับการลบ Branch บน Remote Repository ให้ใช้คำสั่ง git push origin --delete ตามด้วยชื่อ Branch ตัวอย่างเช่น:

git push origin --delete feature/add-user-profile

Best Practices เกี่ยวกับการใช้ Branch

  • สร้าง Branch ให้สั้นและเฉพาะเจาะจง: ตั้งชื่อ Branch ให้สื่อถึงสิ่งที่กำลังทำ (เช่น feature/add-user-profile, bugfix/fix-login-error) และให้แต่ละ Branch มีหน้าที่เดียว
  • Merge Branch บ่อยๆ: ยิ่ง Branch แยกจาก Branch หลักนานเท่าไหร่ โอกาสที่จะเกิด Conflict ก็ยิ่งมากขึ้น ดังนั้นควร Merge Branch บ่อยๆ
  • Code Review: ก่อนที่จะ Merge Branch ควรให้เพื่อนร่วมทีมช่วยตรวจสอบ Code เพื่อหาข้อผิดพลาดและปรับปรุงคุณภาพของ Code
  • ลบ Branch ที่ไม่ได้ใช้งานแล้ว: เพื่อให้ Repository ของเราสะอาดและเป็นระเบียบ

สรุป

การใช้ Branching เป็นหนึ่งในคุณสมบัติที่สำคัญที่สุดของ Git ที่ช่วยให้เราสามารถพัฒนา Feature ใหม่ๆ หรือแก้ไข Bug ได้อย่างมีประสิทธิภาพ การเข้าใจหลักการและวิธีการใช้งาน Branching จะช่วยให้เราทำงานร่วมกับผู้อื่นได้อย่างราบรื่น และทำให้ Source Code ของโปรเจกต์ของเรามีคุณภาพมากยิ่งขึ้น ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับการแก้ไข Bug และการ Debug Code ใน PHP

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์