Khi team tăng từ 5 lên 50 người, những vấn đề về "trận chiến" merge và lịch sử commit rối rắm sẽ bắt đầu xuất hiện.
1. Chiến lược Rebase vs Merge (Lịch sử sạch)
Đây là chủ đề gây tranh cãi nhất.
- Merge: Giữ lại toàn bộ lịch sử, bao gồm cả các commit "sửa lỗi typo" linh tinh. Tạo ra một "cây gia phả" chằng chịt.
- Rebase: "Viết lại lịch sử". Toàn bộ commit của bạn sẽ được nối tiếp vào điểm cuối của nhánh chính, tạo ra một đường thẳng tắp.
Quy tắc Standard:
- Rebase nhánh cá nhân của bạn thường xuyên với
mainđể code luôn mới nhất. - Merge (có tạo merge commit) khi đưa code từ Feature vào Main để giữ dấu mốc.
2. Giải quyết Merge Conflict "Hạng nặng"
Đừng bao giờ resolve conflict trực tiếp trên Terminal nếu nó quá phức tạp.
- Sử dụng Tool: Dùng VS Code Merge Editor hoặc WebStorm.
- Quy tắc 3-Way Merge: Nhìn 3 bảng (Của mình - Của họ - Cái gốc chung).
- Chiến thuật "Chia để trị": Nếu conflict quá lớn, hãy cancel merge, rebase từng phần hoặc liên hệ trực tiếp người viết code đó để cùng ngồi sửa (Pair Programming).
3. Quy trình Code Review (PR Quality)
Để PR không trở thành "bãi rác" thông tin:
- Commit nhỏ (Atomic Commits): Một commit chỉ làm một việc. Đừng commit 20 file cùng lúc.
- PR Description: Luôn có 3 mục: What (Làm gì?), Why (Tại sao?), How to test (Test như thế nào?).
- Conventional Commits: Dùng chuẩn
feat:,fix:,refactor:,docs:để hệ thống hóa thông báo commit.
4. Kỹ thuật Cherry-pick
Đôi khi bạn chỉ muốn lấy duy nhất 1 commit sửa lỗi từ nhánh alpha sang nhánh beta mà không muốn lấy toàn bộ 50 commit tính năng đi kèm.
git cherry-pick <hash-cua-commit>Đây là "phẫu thuật tinh vi" trong Git giúp cứu nguy cho các tình huống cần fix gấp.
5. Mono-repo vs Poly-repo
Với team cực lớn, việc chia nhỏ repository (Poly-repo) giúp giảm tải conflict nhưng lại gây khó khăn trong việc chia sẻ code. Ngược lại, Mono-repo (dùng công cụ như TurboRepo, Nx) giúp share code tốt nhưng Git sẽ trở nên rất nặng.
- Giải pháp: Dùng Sparse Checkout để chỉ tải về các folder bạn thực sự làm việc.
Kết luận
Quản lý team lớn không chỉ là kỹ thuật, đó là Kỷ luật. Hãy thiết lập một bộ quy tắc (Standard) và dùng Automation (Hooks) để ép mọi người tuân thủ.