Branch & Merge
แยกงานเป็น "สาย" ของตัวเองแล้วรวมกลับ — หัวใจของการทำงานหลายฟีเจอร์/หลายคนพร้อมกัน
branch ให้เราทำงานบนสายของตัวเองโดยไม่กระทบโค้ดหลัก ทำฟีเจอร์เสร็จค่อยรวม (merge) กลับ — เป็นวิธีที่ทีมทำงานหลายอย่างพร้อมกันโดยไม่เหยียบกัน
branch คืออะไร
นึกถึง branch เป็น "สายเวลาคู่ขนาน" ของโค้ด สาขาหลักมักชื่อ main คุณแตกสายใหม่ไปทำฟีเจอร์ พอเสร็จค่อยรวมกลับ main
git branch # ดู branch ทั้งหมด (* คืออันปัจจุบัน)
git switch -c feature-login # สร้าง+ย้ายไป branch ใหม่
# (แบบเก่า: git checkout -b feature-login)
# ...แก้โค้ด, add, commit บน branch นี้...
git switch main # กลับมา mainmerge — รวม branch กลับ
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 โดยตรง — แตก 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