Branching เป็นฟีเจอร์ในทุกระบบควบคุมเวอร์ชันสมัยใหม่ Branches ให้นักพัฒนาห่างจาก main version ของโค้ด และทำการเปลี่ยนแปลงโดยไม่อัปเดต main version
ในระบบควบคุมเวอร์ชันอื่นๆ การ branching อาจยุ่งยาก ต้องสร้าง copy ใหม่ของโค้ดทั้งหมด ซึ่งลำบากสำหรับโปรเจกต์ใหญ่ Git มีคำสั่ง branching เรียบง่าย ให้นำทางระหว่าง branches ได้ง่าย
บทช่วยสอนนี้อธิบายพื้นฐาน branching ใน Git และการใช้คำสั่ง git branch พร้อมตัวอย่าง จนจบคุณจะเชี่ยวชาญ branching ใน Git
Git Branches คืออะไร?
Branches เป็นส่วนสำคัญของการทำงานกับ Git
ในโปรเจกต์มืออาชีพ มักใช้ branch สำหรับแต่ละ feature หรือ bug fix เพราะ branching ให้นักพัฒนาทำงานบน repository โดยไม่กระทบ main codebase สามารถทำงาน feature หรือแก้บั๊กกับผู้อื่นก่อน push ไป main copy
วิธีนี้ลดโอกาสที่โค้ดที่มีบั๊กจะถูก merge เข้า main codebase
ใน Git branch คือเส้นทางใหม่ภายใน repository มี version โค้ดของตัวเอง และ evolve แยกจาก main branch (มักเรียกว่า "master branch")
เพราะ branches อิสระจาก master branch จึงใช้ทำงาน feature ต่างๆ พร้อมกัน (parallel) ได้ เมื่อพร้อม จะ merge เข้า master branch
คำสั่ง Git Branch
User-created branches อิสระจาก master branch มี commit history ของตัวเอง การ push ไป branch ใด จะปรากฏแค่ branch นั้น
คิดว่า branches คือการสร้าง multiple versions ของ codebase เดียวกัน อาจมี branch สำหรับ feature ใหม่ อีก branch สำหรับแก้ issue ที่เปิดอยู่
คำสั่ง git branch ใช้จัดการ branches: สร้าง, เปลี่ยนชื่อ, ลบ และดูรายการ branches
นอกจากนี้ git branch มักใช้ร่วมกับ git checkout (สลับ branch) และ git merge (รวม branch) ซึ่งมีบทช่วยสอนแยกต่างหาก
ดูรายการ Branches (Retrieve a List of Branches)
ใช้ git branch เพื่อดูรายการ branches ใน repository
git branch
ตัวอย่างผลลัพธ์:
* master * v0.9 * v0.8
เครื่องหมาย * หน้าชื่อ branch แสดงว่าเป็น branch ปัจจุบัน ใช้ git branch --list ก็ได้ผลเหมือนกัน
สร้าง Branch (Create a Branch)
สร้าง branch ชื่อ "v0.9.1":
git branch v0.9.1
คำสั่งนี้สร้าง branch ใหม่ แต่ development environment ยังคงอยู่ที่ HEAD ของ repo เดิม หากอยากเห็น branch ใหม่ ต้องใช้ git checkout
เมื่อสร้าง branch ใหม่ repository ไม่เปลี่ยนแปลงอย่างอื่น แค่มี branch ใหม่เพิ่มขึ้น Git สร้างแค่ pointer ไป branch ใหม่ หากอยาก commit โค้ดลง branch ใหม่ ต้องใช้ git checkout, git add, git commit
ลบ Branch (Delete a Branch)
ลบ branch ใช้ flag -d
ลบ branch v0.9.1:
git branch -d v0.9.1
Flag -d ทำ safe delete: หากมี unmerged changes (การเปลี่ยนแปลงที่ยังไม่ merge ไป branch อื่น) จะไม่ลบ ป้องกันการลบ branch ที่มีโค้ดที่อยาก merge โดยไม่ตั้งใจ
หากต้องการลบบังคับ (force delete) แม้จะมี unmerged changes ใช้ flag -D (พิมพ์ใหญ่):
git branch -D v0.9.1
คำสั่งนี้ลบ branch ถาวร -D ควรใช้เฉพาะเมื่อแน่ใจว่าต้องการลบ เพราะไม่มี warning
หลังรัน git branch -d/-D local copy ของ branch จะถูกลบ แต่อาจยังมีอยู่ใน remote repo หากเก็บ remote
หากต้องการลบ remote copy ใช้คำสั่ง:
git push origin :v0.9.1
คำสั่งนี้สั่ง remote repository ลบ branch v0.9.1
เปลี่ยนชื่อ Branch (Rename a Branch)
เปลี่ยนชื่อ branch ด้วย flag -m จะ rename branch ที่กำลังดูอยู่ (current branch)
สมมติอยาก rename branch v0.9.2 (ที่ดูอยู่) เป็น v1:
git branch -m v1
คำสั่งนี้ rename branch ปัจจุบันเป็น v1
สรุป
คำสั่ง git branch ใช้สร้าง, เปลี่ยนชื่อ, และลบ branches รวมถึงดูรายการ branches ที่เกี่ยวข้องกับ git repo
อย่างไรก็ตาม หากต้องการ commit โค้ดลง branch ต้องใช้คำสั่งอื่น เช่น git checkout, git add, git commit เพื่อบันทึกการเปลี่ยนแปลง
บทช่วยสอนนี้อธิบายพื้นฐาน branching และการใช้ git branch พร้อมตัวอย่าง ตอนนี้คุณพร้อม branching โค้ดใน Git อย่างมืออาชีพแล้ว!