Dark mode
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