Git Branch là gì?
Website đang chạy bình thường. Sếp giao cho bạn thêm tính năng đăng nhập mới. Bạn code ở đâu để không làm hỏng code đang hoạt động?
Câu trả lời là Git Branch. Đây là một trong những tính năng quan trọng nhất của Git, giúp bạn làm việc chuyên nghiệp như một lập trình viên thực thụ.
Git Branch là gì?
Branch (nhánh) trong Git là một không gian làm việc riêng biệt – tách ra từ code chính mà không ảnh hưởng đến nó.
Hình ảnh dễ hiểu: Như cành cây mọc từ thân cây. Bạn có thể cắt tỉa cành mà không làm hỏng thân cây.
Tại sao cần dùng Branch?
- An toàn khi phát triển tính năng mới: Code thoải mái mà không sợ làm hỏng bản đang chạy
- Làm việc nhóm không bị xung đột: Mỗi người một branch riêng
- Dễ rollback khi có lỗi: Xóa branch, code cũ vẫn nguyên
Tìm hiểu thêm về Git cơ bản: Git là gì? và Các lệnh Git cơ bản
Các lệnh Git Branch cơ bản
Xem danh sách branch
# Branch local
git branch
# Branch local + remote
git branch -a
Kết quả mẫu:
* main ← dấu * = branch bạn đang ở
feature/login
bugfix/header
Tạo branch mới
# Tạo branch mới (chưa chuyển sang)
git branch feature/login
# Tạo và chuyển sang ngay (cách hay dùng nhất)
git switch -c feature/login
Quy tắc đặt tên branch:
feature/ten-tinh-nang: Tính năng mớibugfix/ten-bug: Sửa lỗi thông thườnghotfix/ten-loi-khan: Sửa lỗi khẩn cấp trên production
Chuyển branch
# Cách mới (Git 2.23+, được khuyến dùng)
git switch main
# Cách cũ (vẫn hoạt động)
git checkout main
Xem đang ở branch nào
git branch # dấu * cho biết branch hiện tại
git status # dòng đầu tiên hiện tên branch
Merge Branch trong Git
Cách merge cơ bản
# Bước 1: Chuyển về branch muốn nhận code
git switch main
# Bước 2: Merge branch kia vào
git merge feature/login
Fast-forward merge (đơn giản nhất)
Trước merge:
main: A → B
feature: → C → D
Sau merge (fast-forward):
main: A → B → C → D
Xảy ra khi main không có commit mới sau khi tách branch.
Xử lý Conflict (Xung đột)
Conflict xảy ra khi 2 người cùng sửa cùng 1 dòng trong cùng 1 file:
<<<<<<< HEAD (nội dung của main)
<h1>Tiêu đề cũ</h1>
=======
<h1>Tiêu đề mới</h1>
>>>>>>> feature/login (nội dung của feature)
Cách giải quyết:
- Mở file bị conflict
- Chọn giữ phần nào (hoặc kết hợp cả hai)
- Xóa các dòng
<<<<<<<,=======,>>>>>>> - Save file
- Chạy lệnh:
git add ten-file-bi-conflict
git commit -m "Giải quyết conflict"
Xóa Branch
# Xóa branch đã merge (an toàn)
git branch -d feature/login
# Xóa branch chưa merge (ép buộc)
git branch -D feature/login
Thói quen tốt: Xóa branch sau khi đã merge. Repository sạch, dễ quản lý.
Git Branch trong làm việc nhóm – GitHub Flow
Quy trình được nhiều team sử dụng:
1. git switch -c feature/add-search (tạo branch mới)
2. Code, commit thường xuyên
3. git push origin feature/add-search (đẩy lên GitHub)
4. Tạo Pull Request trên GitHub
5. Code review bởi teammate
6. Merge vào main
7. Xóa branch
Tìm hiểu thêm về GitHub: GitHub là gì?
Thực hành: Workflow từ A đến Z
# 1. Lấy code mới nhất
git pull origin main
# 2. Tạo branch mới
git switch -c feature/add-search
# 3. Code, commit
git add .
git commit -m "Thêm search box vào header"
# 4. Đẩy lên GitHub
git push origin feature/add-search
# 5. Tạo Pull Request trên GitHub (web UI)
# 6. Sau khi merge: dọn dẹp
git switch main
git pull origin main
git branch -d feature/add-search
Bảng tổng hợp lệnh Git Branch
| Lệnh | Chức năng |
|---|---|
git branch | Xem branch local |
git branch -a | Xem tất cả branch |
git branch <tên> | Tạo branch mới |
git switch <tên> | Chuyển sang branch |
git switch -c <tên> | Tạo và chuyển branch |
git merge <tên> | Merge branch vào hiện tại |
git branch -d <tên> | Xóa branch đã merge |
git branch -D <tên> | Xóa branch (ép buộc) |
Câu hỏi thường gặp (FAQ)
Nên đặt tên branch như thế nào?
Dùng chữ thường, phân cách bằng - hoặc /. Ví dụ: feature/user-login, bugfix/cart-calculation. Tên nên mô tả rõ mục đích.
Có thể có bao nhiêu branch?
Không giới hạn. Nhưng branch không dùng nữa nên xóa đi để repo gọn gàng.
Branch local và remote khác nhau thế nào?
Branch local tồn tại trên máy bạn. Branch remote tồn tại trên GitHub/GitLab. Dùng git push để đồng bộ local lên remote.