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?
Gọi tư vấn 0982.90.4343
Chuyên gia về Web
Bài viết liên quan

07/04/2024

PHP: Format date dd/mm/yyyy và so sánh với Date hiện tại
Một vấn đề hay gặp trong quá trình xử lý PHP datetime là tình huống format date từ định dạng...

02/01/2024

Fix lỗi npm không thể cài các package devDependencies
Khi cài đặt dự án,  có lúc bạn sẽ cài mãi cũng không đủ các package npm, đặc biệt là...
Gọi file PHP trong WordPress

19/09/2023

Cài đặt và sử dụng WP-CLI trên môi trường Linux
Trên một số môi trường Hosting có thể cung cấp SSH hoặc Terminal access, song không có sẵn WP-CLI để...
Import database MySQL lớn trên môi trường Docker

06/08/2023

Import database MySQL lớn trên môi trường Docker
Mình sử dụng EasyPanel để quản lý các Docker và build môi trường app. Nay gặp tình huống phải import...