วิธีสร้างและสลับ Branch ใน Git อย่างถูกต้อง

การสร้างและสลับ 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 ได้อย่างสะดวก