Git Flow là gì? Hướng dẫn Git Flow chuẩn cho làm việc nhóm hiệu quả

0
261
Fit flow
Fit flow

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
Mô hình phân nhánh
Mô hình phân nhánh

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ạn
  • upstream → 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
Quy trình giải quyết conflict khi merge
Quy trình giải quyết conflict khi merge

Thao tác xử lý conflict:

  1. Mở file conflict → sửa tay
  2. 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: develop hoặc main
  • 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