Chọn Git workflow sai cho team là một trong những sai lầm tốn kém nhất trong phát triển phần mềm. Merge conflict chồng chất, release chậm trễ, và developer frustration là những hậu quả thường gặp. Hãy cùng xem các lựa chọn phổ biến nhất.
GitFlow — Workflow Cổ Điển Cho Release Cycle Dài
GitFlow được Vincent Driessen giới thiệu năm 2010 và nhanh chóng trở thành tiêu chuẩn. Mô hình này có hai nhánh chính:
- main: Code production, luôn ổn định
- develop: Nhánh tích hợp, base cho tất cả feature
Và ba loại nhánh phụ:
feature/*: Tách từ develop, merge về developrelease/*: Chuẩn bị release, merge về cả main và develophotfix/*: Fix khẩn từ main, merge về cả main và develop
# Tạo feature mới
git checkout -b feature/user-auth develop
# Hoàn thành, merge về develop
git checkout develop
git merge --no-ff feature/user-auth
git branch -d feature/user-auth
Phù hợp khi: Sản phẩm có versioning rõ ràng (v1.0, v2.0), release schedule cố định, hoặc cần maintain nhiều version cùng lúc.
Không phù hợp khi: Team muốn deploy liên tục (CD), vì vòng đời nhánh dài làm tăng conflict.
GitHub Flow — Đơn Giản Cho Continuous Deployment
GitHub Flow loại bỏ nhánh develop và release, chỉ giữ lại một quy tắc đơn giản: main luôn deployable.
- Tạo nhánh từ main
- Commit thường xuyên
- Mở Pull Request khi muốn feedback hoặc merge
- Review và test trên PR
- Deploy để verify (có thể deploy từ branch trước)
- Merge vào main
git checkout -b feature/dark-mode main
# ... code, commit ...
git push origin feature/dark-mode
# Mở PR trên GitHub
Phù hợp khi: Web app deploy liên tục, team nhỏ đến vừa, product không cần maintain nhiều version.
Trunk-Based Development — Tốc Độ Tối Đa
TBD đẩy ý tưởng đơn giản đến cực đoan: mọi người commit thẳng vào trunk (main), tối đa 1-2 ngày mới tạo nhánh. Feature chưa hoàn thiện được ẩn bằng feature flags.
# Developer A commit trực tiếp
git commit -m "add payment module (behind flag)"
git push origin main
# Nếu cần branch, giữ ngắn
git checkout -b short-lived-branch
# Xong trong 1-2 ngày, merge ngay
Phù hợp khi: Team có CI/CD mạnh, kỷ luật cao, muốn tốc độ tối đa.
Yêu cầu: Test coverage tốt, feature flags system, developer discipline.
So Sánh Nhanh
- GitFlow: Phức tạp, an toàn, cho release có lịch
- GitHub Flow: Đơn giản, linh hoạt, cho web app
- TBD: Cực đơn giản, cực nhanh, đòi hỏi kỷ luật cao
Không có workflow nào là tốt nhất. Workflow tốt nhất là cái team bạn thực sự tuân thủ được.
Kết Luận
Nếu bạn đang bắt đầu, hãy thử GitHub Flow — đơn giản và đủ tốt cho hầu hết các trường hợp. Khi team lớn hơn hoặc có nhu cầu cụ thể, hãy xem xét GitFlow hoặc TBD. Quan trọng nhất là cả team phải đồng thuận và tuân thủ nhất quán.
Chưa có bình luận. Hãy là người đầu tiên!