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

Rate this post

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.

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:

  • 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
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:

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.

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.

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:

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

Viết một bình luận

Chuyên gia về Web
Bạn muốn làm việc với dịch vụ website do chúng tôi triển khai?
Liên hệ: 0876-80-84-80
Chuyên gia về Web
Bài viết liên quan

28/01/2023

Hướng dẫn cài đặt php extension mongodb trên Mac OS M1
Khi bạn muốn hỗ trợ MongoDB trên dòng Mac M1, phần cài đặt sẽ cần một chút lưu ý. Hướng...
Git

18/12/2022

Xử lý lỗi Git không thể tiến hành merge do merge.renamelimit
Khi bạn tiến hành merge nhánh phụ vào nhánh chính hoặc lên nhánh production, có thể xung đột xảy ra...
Fix lỗi ERR_TOO_MANY_REDIRECTS khi cấu hình tên miền trên CloudFlare

17/12/2022

Fix lỗi ERR_TOO_MANY_REDIRECTS khi cấu hình tên miền trên CloudFlare
Khi các bạn bật biểu tượng đám mây trên DNS của tên miền tại CloudFlare, nhiều bạn sẽ gặp tình...
Hướng dẫn cài extension ioncube trên phần mềm LocalWP

16/11/2022

Hướng dẫn cài extension ioncube trên phần mềm LocalWP
LocalWP là phần mềm tạo web server dành cho fan yêu thích WordPress. Hướng dẫn này bổ sung cách cài...