Share vì hữu ích

6 phút đọc

Sau hai bài viết hướng dẫn sử dụng Git phần 1phần 2, hẳn bạn đã biết khá nhiều lệnh liên quan dành cho Git. Trong bài viết này, chúng ta sẽ tìm hiểu về Git Flow – một cách thức được đề nghị để cải tiến quá trình làm việc của Git và hữu ích cho teamwork.

Làm việc cùng Git Flow giúp cải thiện teamwork

Git Flow là gì?

Git Flow được Vincent Driessen đưa ra nhằm cải thiện quá trình làm việc cùng Git. Thực chất, đấy là cách chia nhánh và merge nhánh vào khi hoàn thành một tập hợp tính năng hoặc fix.

Git Flow làm việc dựa trên merge, chứ không phải thao tác cherry-pick thường thấy.

Cách thức thông thường một team hay làm việc:

  • Lead update 1 branch master với các commit mới nhất.
  • Các developer thực hiện checkout master này để làm việc với fix và feature.
  • Lead review và cherry-pick các commit vào branch master để build

Đâu là điểm yếu của cách làm việc này? Việc Lead gặp trục trặc nhiều với conflict và merge code sẽ thường xuyên xảy ra, đặc biệt là khi thực hiện các hotfix với nhiều vấn đề có khả năng ghi đè lẫn nhau.

Git có thể mang lại sự linh hoạt, nhưng cũng đẩy việc rối rắm trong quản lý lên mức độ cao hơn.

Bài toán Git Flow giải quyết

Git Flow đưa ra các quy ước để triển khai công việc. Nó được tổng kết qua quá trình làm việc thực tiễn của nhiều team trên thế giới hiện nay và mang lại kết quả khả quan đáng kinh ngạc. Mục đích là các nhóm công việc triển khai song song nhưng không ảnh hưởng tới nhau. Các  môi trường development, staging và production tách biệt giúp quá trình kiểm thử (QA), trả lại feedback và xử lý các issue được gọn gàng và thống nhất hơn nhiều.

Ý tưởng của nó thực ra là duy trì các nhánh branch không đổi, tức không xoá (có tính cố định) trong suốt dòng đời sản phẩm. Branch master sẽ luôn là branch chính áp dụng cho production, trong khi các branch hotfix, features hay develop cung cấp các bản để phục vụ QA và hoàn thiện trước khi được đẩy lên master.

Khác với cách thông thường tạo ra nhiều vấn đề xảy ra ngay trên production, thứ mà chúng ta hay gọi là “rút kinh nghiệm từ những sai lầm thực tiễn”, Git Flow đẩy quá trình QA vào một phần bắt buộc cho cả developer và team QA và yêu cầu sự hoàn thiện cao hơn về chất lượng đầu ra.

Git Flow không phải là công cụ mới. Nó thực ra là quy ước của team để làm việc tốt hơn, các bạn nhé!

Cách thức Git Flow trong teamwork:

Lead đẩy lên branch master ban đầu.

Các developer thực hiện:

Làm việc cùng Git Flow giúp cải thiện teamwork

  • Nếu thực hiện fix một tính năng nào đó, checkout 1 branch tên hotfix/<tên branch>, ví dụ hotfix/popup
  • Nếu thực hiện 1 feature mới, checkout branch với tên features/<tên branch>, ví dụ features/header
  • Nếu tiến hành release một tính năng, checkout branch với tên release/<tên branch>, thông thường là mã SHA (dạng v1.1.0), chẳng hạn: release/v1.1.0
Làm việc cùng Git Flow giúp cải thiện teamwork
Sau khi tạo branch, developer đẩy commit lên branch này.

Trong quá trình làm việc, Lead sẽ làm việc với các developer:

Làm việc cùng Git Flow giúp cải thiện teamwork

Giai đoạn 1: Sau khi hoàn thành tính năng và sẵn sàng để QA (thường đã qua 1 round QA của riêng developer đó), developer tạo pull-request để yêu cầu xác nhận. Trong quá trình này, Lead/QA Team sẽ review và cho feedback.

Làm việc cùng Git Flow giúp cải thiện teamwork

Giai đoạn 2: Developer thực hiện các bản fix nếu có. Quá trình sẽ bắt đầu deploy và test toàn bộ phần công việc trên staging.

Làm việc cùng Git Flow giúp cải thiện teamwork

Giai đoạn 3: Sau khi hoàn thành test trên staging, sẽ chuyên qua gửi yêu cầu merge-request:

Làm việc cùng Git Flow giúp cải thiện teamwork

Tài liệu tham khảo

Các bạn thấy Git Flow có khó hiểu không? Tham khảo thêm các tài liệu để triển khai Git Flow trong team nhé!

Kết luận

Điểm lợi lớn nhất của Git Flow là giúp việc theo dõi và xử lý các vấn đề nảy sinh do một tính năng, một bản fix rất dễ dàng. Quá trình review sẽ thuận tiện và quan sát được các lỗi nảy sinh trong quá trình deploy.

Tuy vậy, nếu bạn muốn tăng thời gian triển khai production thì sẽ gặp hạn chế đôi chút về mặt thời gian. Ngoài ra, việc remove các commit không đạt yêu cầu chất lượng cũng khó khăn hơn (ta không dùng cherry-pick để làm nữa).

Bạn hãy thử áp dụng và chia sẻ cho Code Tốt biết những điểm mạnh và yếu của Git Flow nhé.

Ảnh minh hoạ: Credit Github

Share vì hữu ích

Tác giả: Khôi 'Pro' Nguyễn

Technical Lead tại Solis Lab. Quản lý ngôn ngữ tại vi.wordpress.org.

Trả lời