การสร้างและสลับ branch คือทักษะที่ต้องใช้บ่อยที่สุดในการทำงานกับ Git บทความนี้จะอธิบายคำสั่งทั้ง git branch, git checkout และ git switch พร้อมกรณีการใช้งานจริงที่มักพบในชีวิตประจำวัน
การสร้าง Branch
วิธีที่ 1: สร้าง branch เฉยๆ
git branch feature/login
# สร้าง branch ชื่อ feature/login แต่ยังอยู่ที่ branch เดิม
วิธีที่ 2: สร้างและสลับไปทันที (git checkout -b)
git checkout -b feature/login
# สร้างและสลับไปทันที
# Switched to a new branch 'feature/login'
วิธีที่ 3: git switch -c (วิธีใหม่ แนะนำ)
git switch -c feature/login
# เหมือนกันกับ checkout -b แต่ชัดเจนกว่า (Git 2.23+)
สร้าง branch จาก branch อื่น
# สร้าง branch จาก develop แทนที่จะเป็นจาก main
git switch -c feature/payment develop
# สร้างจาก tag หรือ commit hash
git switch -c hotfix/urgent-fix v1.2.3
การสลับ Branch
สลับด้วย git checkout (วิธีเดิม)
git checkout main
git checkout develop
git checkout feature/login
สลับด้วย git switch (วิธีใหม่ ชัดเจนกว่า)
git switch main
git switch develop
# สลับกลับ branch ก่อนหน้า
git switch -
การดูแล Branch
# ดู branch ที่มีใน local
git branch
# * feature/login ← branch ปัจจุบัน
# main
# ดูทั้ง local และ remote
git branch -a
# ดูพร้อมค่า commit ล่าสุด
git branch -v
การลบ Branch
# ลบ branch ที่ merge แล้ว
git branch -d feature/login
# Force ลบ (merge หรือไม่ก็ตาม)
git branch -D feature/login
# ลบ branch บน remote
git push origin --delete feature/login
ทะเบียนชื่อ Branch ที่ดี
| รูปแบบ | ตัวอย่าง | หมายเหตุ |
|---|---|---|
| feature/ | feature/user-auth | ฟีเจอร์ใหม่ |
| bugfix/ | bugfix/login-crash | แก้ bug ทั่วไป |
| hotfix/ | hotfix/payment-null | แก้ด่วนใน production |
| release/ | release/2.1.0 | เตรียม release |
| chore/ | chore/update-deps | งานบำรุงรักษา |
ข้อผิดพลาดที่พบบ่อย
สลับ branch แต่ยังมีไฟล์ที่ยังไม่ได้ commit
# ขึ้น error: Your local changes would be overwritten
git switch main
# วิธีแก้: stash ก่อน
git stash
git switch main
git stash pop # เอากลับมาในภายหลัง
# หรือ commit ก่อนแล้วค่อยสลับ
git add .
git commit -m "wip: save progress"
git switch main
ลบ branch ที่ยังอยู่ในนั้นไม่ได้
# error: Cannot delete branch 'feature/login' checked out at ...
# ต้องสลับไป branch อื่นก่อน
git switch main
git branch -d feature/login
เทคนิคเพิ่มเติม: Tracking Branch
# สร้าง branch ที่ติดตาม remote branch อัตโนมัติ
git checkout -b feature/login origin/feature/login
# หรือใช้คำสั่งสั้น
git checkout --track origin/feature/login
# push และ set upstream ในครั้งเดียว
git push -u origin feature/login
# จากนั้นสามารถ git pull/push ได้เลยโดยไม่ต้องระบุ origin
สรุป
การสร้างและสลับ branch เป็นอักษรที่คุณจะใช้ร่วมกับ Git ตลอดเวลา จำหลักการง่ายๆ: สลับไป branch ใหม่ก่อน ทำงานใน branch นั้น commit เมื่อเสร็จ merge เมื่อพร้อม สำหรับสภาพแวดล้อมที่เหมาะสม Cloud VPS จาก ผู้ให้บริการโฮสติ้ง ให้คุณติดตั้ง Git server หรือ Gitea ได้อย่างสะดวก
