Trang chủ Program GIỚI THIỆU VỀ GIT-FLOW

GIỚI THIỆU VỀ GIT-FLOW

bởi root

1. GitFLow là gì?

GitFlow là tên gọi của một Model áp dụng cho Git và được gọi là A successful Git branching model do Vincent Driessen đề xuất ra. Trong GitFlow có 5 kiểu Branch với mỗi vai trò khác nhau (tùy trường hợp mà có lúc là 6 kiểu). Các kiểu Branch gồm: Master, Develop, Feature, HotFix, Release và Support. Thành thạo switch giữa các Branch với nhau sẽ giúp phát triển dự án một cách hiệu quả. Bằng việc set trước các Branch, những rule khi Merge, dù có bao nhiêu developer cùng thời điểm phát triển vẫn có thể quản lý branch dễ dàng, và tránh được những vấn đề do Merge

2. Lợi ích của việc dùng GitFlow

Phát triển song song:

– Một trong những điểm nổi bật của GitFlow là khiến cho việc phát triển song song trở nên dễ dàng hơn bằng việc tách nhánh ra để phát triển thay vì phát triển ngay trên những nhánh đã hoàn thiện

Dễ dàng hợp tác với nhau:

– Vì những nhánh tính năng được chia nhỏ ra theo từng tính năng vì vậy khi 2 hay nhiều lập trình viên cũng làm 1 tính năng thì có thể dễ dàng theo dõi luồng công việc và biết được ai đang làm gì, đã xử lý những gì, ở những vị trí nào

Hỗ trợ HotFix:

– GitFlow có hỗ trợ HotFix Branch sử dụng để “sửa nóng” trong trường hợp sửa lỗi khẩn cấp. Lưu ý chỉ sử dụng HotFix trong trường hợp cần sửa gấp. Việc sử dụng HotFix sẽ hạn chế ảnh hưởng tới luồng công việc , các nhánh Develop cũng như Feature đang làm. Là nhánh duy nhất ngoài Release được phép Merge vào Master

3. Cách thức hoạt động của GitFlow

Những tính năng mới sẽ được tách ra thành các Feature Branch, các Feature Branch được tách ra từ Develop Branch:

Hình 1: Tách Feature Branch từ Develop Branch

Sau khi hoàn thành tính năng, Feature Branch sẽ được Merge lại vào Develop Branch

Hình 2: Merge lại Feature Branch vào Develop Branch

Khi đến thời điểm Release, Release Branch được khởi tạo, Release Branch cũng được tách ra từ Develop Branch. Sự khác nhau giữa Release Branch với Feature Branch nằm ở chỗ, Release Branch sẽ được triển khai trong môi trường test thích hợp, được test và bất kỳ vấn đề phát sinh nào đều sẽ được sửa trực tiếp trên nhánh. Tiếp tục fix và test cho tới khi cảm thấy sản phẩm đủ tốt để đưa ra sử dụng. Khi bản Release được hoàn thiện và đã Release sản phẩm, Release Branch sẽ được Merge vào Master Branch + gắn Tag Version mới. Đồng thời Merge cả lại vào Develop Branch để đảm bảo những gì đã chỉnh sửa trong Release sẽ không bị mất đi ở bản Release sau

Hình 3: Release Branch tách từ Develop Branch và Merge lại khi hoàn thiện

Master Branch chỉ track code đã được Release. Nhánh duy nhất có thể được phép Merge vào Master Branch đó là Release Branch. Ngoài ra còn có Hotfix Branch những chỉ sử dụng trong các trường hợp sửa lỗi khẩn cấp. Hotfix Branch sau khi hoàn thành sẽ được Merge lại vào Master Branch và Develop Branch, đảm bảo lỗi đã sửa sẽ không bị lặp lại ở những bản Release sau

Hình 4: Hotfix Branch tách từ Master Branch và Merge lại khi đã fix xong

4. Triển khai GitFlow trong dự án thực tế

4.1 Triển khai GitFlow sử dụng mã lệnh

Sử dụng mã lệnh để triển khai Git-flow là một cách “khá ngầu” khi tất cả quá trình đều thực hiện bởi các dòng command. Từ khởi tạo Git Flow, tách nhánh Feature,…cho tới Release. Mọi nhánh và luồng GitFlow ở trên đều có thể được thực hiện trên bảng lệnh này. Ví dụ như:

Khởi tạo Git Flow cho Project, từ đó các nhánh master, develop được khởi tạo, các format của prefixes được quy định để đồng bộ

Khởi tạo một nhánh Feature mới. GitFlow làm cho việc làm việc mới nhiều feature trong cùng một thời điểm trở nên dễ dàng hơn bằng việc tách nhiều nhánh, mỗi nhánh đảm nhiệm một tính năng riêng biệt

Khi kết thúc một nhánh tính năng bất kỳ, nó sẽ được Merge trở lại và nhánh tính năng đó sẽ được xóa đi

Những câu lệnh GitFlow rất đa dạng và đầy đủ. Để có thể biết hết được các mã lệnh hỗ trợ cho GitFlow, mọi người có thể tham khảo thêm tài liệu [4] trong phần tài liệu tham khảo phía bên dưới

4.2 Triển khai GitFlow sử dụng SmartGit (SourceTree cũng được)

Ngoài việc sử dụng mã lệnh để triển khai GitFlow thì ta có một cách dễ dàng hơn, trực quan hơn để thực hiện nó, đó là sử dụng các phần mềm như SmartGit và SourceTree

Đối với SmartGit, phần mềm hỗ trợ đầy đủ tất cả các tính năng của GitFlow, hỗ trợ khởi tạo, finish, merge,…các nhánh với nhau

Khởi tạo GitFlow cho Project, tách các nhánh master, develop và quy định format cho các prefixes như feature/, release/,…

Lựa chọn khởi tạo nhánh mong muốn, feature, hotfix hay release

Mỗi khi hoàn thành một nhánh bất kỳ, ta chỉ việc nhấn nút finish để kết thúc nhánh đó, phần mềm sẽ ngay lập tức Merge nhánh hoàn thành lại vào các nhánh như luồng GitFlow đã quy định. Ngoài ra, phần mềm cho phép lựa chọn xóa nhánh đã hoàn thành hay không. Theo kinh nghiệm, nhánh hoàn thành nên được giữ lại để đề phòng chỉnh sửa. “Với tình hình dev như hiện nay thì nên giữ lại nhánh tính năng này khi nào bàn giao hoàn thiện rồi mới xóa đi. Đề phòng bất trắc”, anh T.D.D chia sẻ

Tổng kết: 

GitFlow là công cụ đắc lực để hỗ trợ phát triển dự án, giúp dự án hoạt động một các suôn sẻ, mượt mà và tránh được sự conflict lẫn nhau giữa các thành viên trong dự án. Những nhánh nhỏ được chia ra để thực hiện sẽ làm cho bug dễ dàng được xử lý hơn và nếu không may, dù thiếu đi một tính năng nhưng dự án vẫn có thể triển khai được các tính năng còn lại, không bị phụ thuộc lẫn nhau. Luồng làm việc được phân chia rõ ràng, đồng bộ, nhất quan giúp các thành viên dễ quan sát và theo dõi công việc của bản thân cũng như công việc của các thành viên khác. Tuy nhiên, với những dự án lớn, việc các nhánh đan xen lẫn nhau chằng chịt sẽ dễ khiến cho luồng trở nên không còn có thể quan sát được nữa, khó có thể quan sát.

Tài liệu tham khảo: 

[1] Introducing GitFlow, https://datasift.github.io/gitflow/IntroducingGitFlow.html?fbclid=IwAR0WeGWkNd-Dl0M-2KeEjkoRD-VELZVvofkrR-jVMtw3cOBmOffwWU8LsVo

[2] Git-flow, https://viblo.asia/p/git-flow-maGK7W0AKj2?fbclid=IwAR0Hq6e9umYELzSih853PSFwADAHfYDzjvmC1MSJYBQUPKEzyJcZScJtKRQ

[3] Git là gì? Sử dụng Git nâng cao chuẩn GitFlow, https://lptech.asia/kien-thuc/git-la-gi-su-dung-git-nang-cao-chuan-git-flow?fbclid=IwAR0LVowZSkUWbLUYijhrS4woOUH5MOGnjgPVigGbLVeLLS69JLx_Uq6ceyo

[4] Sử dụng GitFlow để tự động hóa Workflow, https://blog.vietnamlab.vn/2015/12/25/su-dung-git-flow-de-tu-dong-hoa-workflow/

Nhấn để đánh giá bài viết!
[Số đánh giá: 0 Trung bình: 0]

Có thể bạn quan tâm

Để lại bình luận