3.6 — 4. Branching và Merging
Mục tiêu bài học
- Nắm được ý chính của bài và mối liên hệ với module.
- Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
- Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.
Nội dung bài học
3.6.1 — Tại sao cần branch?
Branch cho phép bạn làm việc trên một tính năng mới mà không ảnh hưởng đến code đang chạy trên production. Ví dụ: trong khi bạn đang phát triển tính năng "báo cáo doanh thu CRM" (mất 2 tuần), đồng nghiệp vẫn có thể fix bug trên nhánh main và deploy ngay lập tức.
3.6.2 — Chiến lược đặt tên branch
| Prefix | Mục đích | Ví dụ |
|---|---|---|
feature/ | Tính năng mới | feature/customer-import |
fix/ | Sửa bug thông thường | fix/customer-duplicate-email |
hotfix/ | Sửa lỗi khẩn cấp trên production | hotfix/login-crash-null-ref |
refactor/ | Cải thiện code, không đổi behavior | refactor/customer-service-clean |
docs/ | Cập nhật tài liệu | docs/api-swagger-customer |
3.6.3 — Các lệnh branch thường dùng
# Xem tất cả branch
git branch -a
# Tạo branch mới và chuyển sang
git checkout -b feature/crm-lead-pipeline
# Chuyển sang branch đã có
git checkout main
# Xóa branch sau khi merge xong
git branch -d feature/crm-lead-pipeline
# Đổi tên branch hiện tại
git branch -m feature/crm-lead-pipeline feature/crm-sales-pipeline
3.6.4 — Merge so với Rebase
Merge — tạo một "merge commit" ghép lịch sử hai nhánh lại. Lịch sử trung thực, phù hợp khi merge vào main.
git checkout main
git merge feature/customer-search
Rebase — viết lại lịch sử, đặt commit của bạn lên "trên" nhánh đích. Lịch sử gọn hơn, dùng khi cần sync branch với main trước khi mở PR.
git checkout feature/customer-search
git rebase main
# Sau đó push (cần --force-with-lease vì lịch sử đã thay đổi)
git push --force-with-lease origin feature/customer-search
Quy tắc vàng: Không bao giờ rebase nhánh
mainhoặc nhánh đang có người khác làm việc cùng.
Bài tập áp dụng
- Tóm tắt bài học bằng ngôn ngữ của bạn.
- Liên hệ nội dung với một tình huống thực tế trong dự án.
- Đề xuất một cải tiến cụ thể sau khi học bài này.
Tự kiểm tra
- Bạn có thể giải thích lại nội dung chính trong 2 phút không?
- Bạn có ví dụ áp dụng thực tế chưa?
- Bạn biết bước tiếp theo cần học/triển khai là gì không?
Kết luận
Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.
Điều hướng
- Bài trước: 3.5 — 3. Workflow cơ bản
- Bài tiếp theo: 3.7 — 5. GitHub và Pull Request
- Về module: Trang mục lục