Git Flow là một quy trình quản lý nhánh (branching model) trong Git, giúp đội nhóm phát triển phần mềm làm việc có tổ chức, tránh xung đột code và đảm bảo lịch sử commit rõ ràng.
Trong bài viết này, bạn sẽ hiểu:
- Git Flow là gì?
- Vì sao nên áp dụng Git Flow?
- Mô hình nhánh trong Git Flow
- Quy trình Git Flow chuẩn từng bước
- Best practices khi làm việc với Git Flow

Git Flow là gì?
Git Flow là một workflow được đề xuất bởi Vincent Driessen, mô tả cách sử dụng các nhánh Git để quản lý quá trình phát triển, release và hotfix của dự án.
Thay vì làm việc trực tiếp trên nhánh chính, Git Flow khuyến khích:
- Luôn tạo nhánh riêng cho từng feature/bug
- Chỉ merge vào nhánh chính thông qua Pull Request
- Giữ lịch sử commit sạch và dễ theo dõi
Mục tiêu: an toàn – rõ ràng – dễ scale cho team lớn.
Vì sao nên dùng Git Flow
Áp dụng Git Flow giúp:
- Tránh code trực tiếp lên
main/develop - Giảm conflict khi nhiều dev cùng làm việc
- Dễ review code qua Pull Request
- Lịch sử Git rõ ràng, dễ rollback
- Phù hợp CI/CD, release theo phiên bản
Đặc biệt hữu ích cho team từ 2 người trở lên.
Mô hình nhánh trong Git Flow

Một Git Flow chuẩn thường có các nhánh:
- main: code production, luôn stable
- develop: code đang phát triển, chuẩn bị release
- feature/*: phát triển tính năng mới
- bugfix/*: sửa lỗi
- release/*: chuẩn bị phát hành
- hotfix/*: sửa lỗi gấp trên production
Ví dụ:
main
develop
feature/123-add-login
bugfix/456-fix-api
hotfix/789-fix-crash
Xem thêm: Giải Thích Về Phân Nhánh (Branching) Trong Git
Quy trình Git Flow chuẩn cho làm việc nhóm
1. Fork repo gốc
Bạn không có quyền push trực tiếp → fork repo về tài khoản cá nhân.
- Repo gốc:
org/repo - Repo của bạn:
yourname/repo


Sau này:
origin→ fork của bạnupstream→ repo gốc

2. Clone repo fork về máy
git clone [email protected]:yourname/repo.git
cd repo
Kiểm tra:
git remote -v

3. Add remote upstream
git remote add upstream [email protected]:org/repo.git
git fetch upstream
Mục đích: lấy code mới nhất từ repo gốc.

4. Tạo nhánh làm việc (feature/bug)
❌ Không bao giờ code trực tiếp trên main hoặc develop.
git checkout develop
git pull upstream develop
git checkout -b feature.1234.add-login
Quy ước tên nhánh:
feature.<ticket>.<mo-ta>bug.<ticket>.<mo-ta>task.<ticket>.<mo-ta>
5. Commit code
Sau khi code xong:
git add .
git commit -m "feat(auth): add login feature"
6. Rebase với code mới nhất
Để tránh conflict:
git fetch upstream
git rebase upstream/develop
Hoặc:
git pull upstream develop --rebase
Ý nghĩa:
- Lấy code mới nhất
- Đặt commit của bạn lên trên
- Giữ lịch sử thẳng, sạch
7. Fix conflict (nếu có)
Git sẽ báo:
CONFLICT (content): Merge conflict in file X
Cách xử lý:
# sửa file
git add file_x
git rebase --continue
Huỷ nếu cần:
git rebase --abort

Thao tác xử lý conflict:
- Mở file conflict → sửa tay
- Sau khi sửa xong:
# Stage lại file vừa fix conflict
git add file_x # hoặc git add .
# Tiếp tục quá trình rebase
git rebase --continue
Cứ như vậy, thực hiện lặp lại 2 thao tác trên cho đến khi báo success, không còn conflict.
Nếu thấy toang quá: git rebase --abort để huỷ quá trình rebase
8. Push lên fork
git push -u origin feature.1234.add-login
Nếu đã rebase sau khi push → cần force:
git push --force-with-lease origin feature.1234.add-login
⚠️ Chỉ force push trên branch của bạn.
9. Tạo Pull Request (PR)
- Base repo:
org/repo - Base branch:
develophoặcmain - Compare:
feature.1234.add-login
Checklist:
✅ Đã rebase
✅ CI pass
✅ Không commit rác
✅ Mô tả rõ ràng


10. Merge & kết thúc vòng đời branch
Sau khi PR được approve & merge:
- Branch feature coi như hoàn thành
- Quay lại bước tạo branch mới cho task tiếp theo
👉 Đúng tinh thần Git Flow: lặp lại – rõ ràng – có kiểm soát.
Best Practices khi áp dụng Git Flow
✔️ Không commit trực tiếp lên main/develop
✔️ Mỗi task = một branch riêng
✔️ Commit message rõ nghĩa (theo Conventional Commits)
✔️ Rebase thường xuyên với upstream
✔️ Không force push branch người khác
✔️ Xoá branch sau khi merge
✔️ Luôn review code qua PR
Khi nào không nên dùng Git Flow?
Git Flow khá đầy đủ nhưng có thể hơi nặng với:
- Dự án nhỏ, 1 dev
- Dự án deploy liên tục → có thể dùng Trunk-based Development
- Team muốn workflow đơn giản hơn → GitHub Flow
Tuy nhiên, với đa số team backend/frontend hiện nay, Git Flow vẫn là lựa chọn an toàn và phổ biến.
Kết luận
Git Flow là quy trình giúp:
- Chuẩn hoá cách làm việc nhóm với Git
- Giảm rủi ro conflict
- Dễ quản lý release và hotfix
- Nâng cao chất lượng code
Nếu team bạn đang gặp khó khăn khi nhiều người cùng code, thì áp dụng Git Flow là bước đi rất đáng giá
Tham khảo thêm: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow












