Git workflow chuyên nghiệp: Git Flow và GitHub Flow
📚 Git & GitHub Series (Bài 13/15) — Đã thành thạo công cụ qua các bài trước, giờ ta học cách tổ chức chúng thành một git workflow chuyên nghiệp.
Git workflow là tập quy ước về cách cả nhóm dùng nhánh, commit và Pull Request để phối hợp mà không giẫm chân nhau. Cùng một bộ lệnh Git, nhưng cách tổ chức khác nhau sẽ quyết định dự án trơn tru hay hỗn loạn. Bài này so sánh ba mô hình phổ biến nhất — Git Flow, GitHub Flow, Trunk-Based — và quy ước đặt tên nhánh, commit chuẩn.
Vì sao cần một git workflow rõ ràng?
Khi làm một mình, bạn có thể tùy hứng. Nhưng khi nhiều người cùng làm, thiếu quy ước dẫn tới: nhánh tên lung tung, commit khó đọc, merge rối, không biết bản nào đang chạy production. Một workflow tốt trả lời rõ:
- Nhánh nào là "nguồn chân lý" (thường là
main)? - Tính năng mới phát triển ở đâu, gộp về thế nào?
- Lỗi khẩn (hotfix) xử lý ra sao?
- Khi nào và làm sao để phát hành?
GitHub Flow — đơn giản và phổ biến
GitHub Flow là mô hình nhẹ, hợp với triển khai liên tục:
mainluôn ở trạng thái phát hành được.- Tạo nhánh tính năng ngắn hạn từ
main. - Commit, push, mở Pull Request (Bài 9).
- Review + CI xanh → merge vào
main. - Deploy ngay.
Đây chính là mô hình blog này áp dụng: mỗi thay đổi một nhánh, qua PR, CI xanh thì merge và tự động deploy. Đơn giản, nhanh, ít nhánh dài hạn.
Git Flow — bài bản cho sản phẩm có chu kỳ phát hành
Git Flow phức tạp hơn, dùng nhiều nhánh dài hạn và tạm thời:
| Nhánh | Vai trò |
|---|---|
main | Code production đã phát hành |
develop | Tích hợp tính năng đang phát triển |
feature/* | Mỗi tính năng một nhánh, gộp vào develop |
release/* | Chuẩn bị phát hành, sửa lỗi nhỏ |
hotfix/* | Sửa khẩn trên production, gộp cả main và develop |
Git Flow phù hợp phần mềm đóng gói, có phiên bản rõ ràng (ví dụ ứng dụng desktop, mobile). Với web triển khai liên tục, nó thường quá nặng.
Trunk-Based Development — cho tốc độ cao
Mô hình thứ ba được nhiều công ty lớn dùng: mọi người commit thường xuyên vào main (trunk), nhánh sống cực ngắn (vài giờ), dựa mạnh vào CI tự động và feature flag để giấu tính năng chưa xong. Nó tối ưu tốc độ tích hợp nhưng đòi hỏi kỷ luật test cao.
So sánh nhanh ba mô hình
| Tiêu chí | GitHub Flow | Git Flow | Trunk-Based |
|---|---|---|---|
| Độ phức tạp | Thấp | Cao | Thấp–trung bình |
| Số nhánh dài hạn | 1 (main) | 2+ | 1 |
| Hợp với | Web, CI/CD | Sản phẩm có version | Đội lớn, tốc độ cao |
| Tần suất phát hành | Liên tục | Theo chu kỳ | Rất liên tục |
Quy ước đặt tên nhánh và commit
Dù chọn workflow nào, quy ước nhất quán giúp lịch sử dễ đọc:
- Tên nhánh:
feature/ten-tinh-nang,fix/loi-gi-do,chore/cong-viec-vat. - Conventional Commits:
feat: ...,fix: ...,docs: ...,refactor: .... Quy ước này còn giúp tự sinh changelog.
Một thông điệp commit kiểu feat(auth): thêm đăng nhập Google ngay lập tức cho biết loại thay đổi, phạm vi và nội dung. Sự nhất quán nhỏ này tích lũy thành một lịch sử dự án sạch sẽ và dễ truy vết về sau.
Tóm lại
Git workflow biến những lệnh rời rạc thành quy trình nhóm mạch lạc. GitHub Flow đơn giản hợp web và CI/CD; Git Flow bài bản cho sản phẩm có phiên bản; Trunk-Based cho tốc độ cao. Quan trọng nhất là cả nhóm thống nhất một quy ước và tuân thủ nó.
Ở Bài 14, chúng ta tự động hóa toàn bộ quy trình kiểm thử và phát hành với GitHub Actions — CI/CD cho người mới.
Tham khảo & Nguồn dữ liệu
1. Liên kết bên ngoài được sử dụng trong bài viết
2. Liên kết nội bộ liên quan
3. Bản quyền & Ghi nguồn
Một phần dữ liệu trong bài viết được tham khảo từ GitHub Flow. Mọi thương hiệu, tên sản phẩm và tài liệu gốc thuộc quyền sở hữu của chủ sở hữu tương ứng. Bài viết chỉ trích dẫn, tổng hợp và phân tích — không nhằm thay thế tài liệu chính thức.
Câu hỏi thường gặp
Git workflow là gì?
GitHub Flow khác Git Flow thế nào?
Conventional Commits là gì?
💬 BÌNH LUẬN
Đăng nhập GitHub để comment. Hỗ trợ markdown, reaction, reply.