Skip to content

branch (สร้าง branch)

คำสั่ง git branch ใช้สำหรับสร้าง branch ใหม่ โดยไม่ได้เปลี่ยนไปทำงานใน branch นั้นทันที เหมาะสำหรับการสร้าง branch เพื่อใช้งานในภายหลัง

bash
# สร้าง branch ชื่อ new-branch จาก branch ปัจจุบัน
git branch new-branch

# แสดงรายการ branch ทั้งหมดในระบบ
git branch -a

# สร้าง branch ใหม่จาก commit เฉพาะ
git branch hotfix e45cd32

# ลบ branch ที่ไม่ต้องการแล้ว
git branch -d old-feature

checkout (เปลี่ยน branch)

คำสั่ง git checkout ใช้สำหรับเปลี่ยนไปทำงานใน branch อื่น หรือสร้าง branch ใหม่พร้อมเปลี่ยนไปทำงานใน branch นั้นทันที เป็นคำสั่งที่รวมความสามารถของ branch และ switch ไว้ด้วยกัน

bash
# เปลี่ยนไปทำงานใน branch ชื่อ new-branch
git checkout new-branch

# สร้าง branch ใหม่และเปลี่ยนไปใช้ทันที
git checkout -b feature-login

# สร้าง branch ที่ติดตาม remote branch
git checkout -b feature origin/feature

# ยกเลิกการเปลี่ยนแปลงในไฟล์
git checkout -- file.txt

merge (รวม branch)

คำสั่ง git merge ใช้รวมการเปลี่ยนแปลงจาก branch อื่นเข้ามาใน branch ปัจจุบัน โดยจะสร้าง commit ใหม่ที่มีประวัติการรวมกัน ทำให้เห็นประวัติการแตกและรวม branch ได้ชัดเจน

bash
# รวม branch ชื่อ new-branch เข้ากับ branch ปัจจุบัน
git merge new-branch

# รวมแบบ fast-forward เมื่อทำได้
git merge --ff-only feature-branch

# รวมแบบสร้าง commit เสมอ แม้จะสามารถทำ fast-forward ได้
git merge --no-ff feature-branch

# ยกเลิกการ merge หากเกิด conflict
git merge --abort

rebase (รวม branch โดยใช้ rebase)

คำสั่ง git rebase ใช้รวม branch โดยการย้ายฐานของ branch ปัจจุบันไปอยู่บนปลายของ branch เป้าหมาย ทำให้ประวัติ commit เป็นเส้นตรงมากขึ้น แต่จะเปลี่ยนประวัติการ commit ดั้งเดิม เหมาะสำหรับใช้กับ branch ส่วนตัวที่ยังไม่ได้ push ขึ้น remote

bash
# ย้ายฐานของ branch ปัจจุบันไปอยู่บน main
git rebase main

# rebase แบบโต้ตอบ สามารถแก้ไข commit ได้
git rebase -i HEAD~3

# ย้ายฐาน branch feature ไปอยู่บน main
git checkout feature
git rebase main

# ถ้าเกิด conflict ระหว่าง rebase
git add .                # หลังแก้ไข conflict
git rebase --continue    # ดำเนินการ rebase ต่อ

# ยกเลิกการ rebase
git rebase --abort

Concept ของ Git branches