Chuyển tới nội dung chính

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

PrefixMục đíchVí dụ
feature/Tính năng mớifeature/customer-import
fix/Sửa bug thông thườngfix/customer-duplicate-email
hotfix/Sửa lỗi khẩn cấp trên productionhotfix/login-crash-null-ref
refactor/Cải thiện code, không đổi behaviorrefactor/customer-service-clean
docs/Cập nhật tài liệudocs/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 main hoặc nhánh đang có người khác làm việc cùng.


Bài tập áp dụng

  1. Tóm tắt bài học bằng ngôn ngữ của bạn.
  2. Liên hệ nội dung với một tình huống thực tế trong dự án.
  3. Đề 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