Notes & software courses · Free to learn
Aph's Blog
On this page

Branch & Merge

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

แยกงานเป็น "สาย" ของตัวเองแล้วรวมกลับ — หัวใจของการทำงานหลายฟีเจอร์/หลายคนพร้อมกัน

branch ให้เราทำงานบนสายของตัวเองโดยไม่กระทบโค้ดหลัก ทำฟีเจอร์เสร็จค่อยรวม (merge) กลับ — เป็นวิธีที่ทีมทำงานหลายอย่างพร้อมกันโดยไม่เหยียบกัน

branch คืออะไร

นึกถึง branch เป็น "สายเวลาคู่ขนาน" ของโค้ด สาขาหลักมักชื่อ main คุณแตกสายใหม่ไปทำฟีเจอร์ พอเสร็จค่อยรวมกลับ main

bash
git branch                  # ดู branch ทั้งหมด (* คืออันปัจจุบัน)
git switch -c feature-login # สร้าง+ย้ายไป branch ใหม่
# (แบบเก่า: git checkout -b feature-login)

# ...แก้โค้ด, add, commit บน branch นี้...

git switch main             # กลับมา main

merge — รวม branch กลับ

bash
git switch main             # ไปยัง branch ปลายทาง
git merge feature-login     # รวม feature-login เข้า main
git branch -d feature-login # ลบ branch ที่ merge แล้ว

fast-forward vs merge commit

ถ้า main ไม่มี commit ใหม่ระหว่างที่เราทำ feature การ merge จะเป็น fast-forward (แค่เลื่อนตัวชี้) แต่ถ้า main มีการเปลี่ยนด้วย git จะสร้าง merge commit เพื่อรวมสองสาย

อย่าทำงานบน main ตรง ๆ

ในทีม กฎทั่วไปคือไม่แก้ main โดยตรง — แตก branch ต่อฟีเจอร์/ต่อ bug เสมอ ทำให้ main คงสภาพใช้งานได้ตลอด และรีวิวก่อนรวมได้ (เจอใน PR workflow ท้ายบท)

สรุปหัวข้อนี้

  • branch = สายเวลาคู่ขนานของโค้ด แยกงานไม่ให้กระทบ main
  • git switch -c ชื่อ สร้าง+ย้าย; git switch main กลับมา
  • git merge รวม branch กลับ; git branch -d ลบที่ merge แล้ว
  • ไม่แก้ main ตรง ๆ — แตก branch ต่อฟีเจอร์เสมอ
แบบฝึกหัด

1) สร้าง branch feature-x แก้ไฟล์ commit แล้ว merge กลับ main 2) ดู git branch ก่อน/หลังสร้าง 3) ลองสร้าง 2 branch แก้คนละไฟล์แล้ว merge ทั้งคู่ 4) ลบ branch ที่ merge แล้วด้วย -d