Công ty TNHH TMĐT Công nghệ LP

4.8/5 (8 Reviews)
Tác giả:
Tác giả: Lê Văn Phú

Git Flow là gì?

Git Flow là tên gọi của 1 tool (command) hỗ trợ branch model gọi là A successful Git branching model do Vincent Driessen đề xuất ra. Người ta thường gọi đó là model hay tool, và trong git-flow có 5 kiểu với mỗi vai trò khác nhau (tùy trường hợp mà có lúc là 6 kiểu).

Switch các kiểu với nhau để phát triển 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 Tiếp theo. Chúng ta cùng xem về các kiểu của branch có trong git-flow.

Lợi ích khi dùng git-flow

Git Flow là gì?

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.

Trong môi trường thực tế tại LPTech thì chúng tôi sử dụng git để hạn chế những rủi ro cho các dự án thiết kế web và lập trình phần mềm quản lý bán hàng, phần mềm erp. Việc sử dụng GIT còn giúp cho vấn đề Release dự án lên server 1 cách thuận lợi và hoàn toàn tự động nhờ các công cụ CD tích hợp sẳn.

Tại sao lại chọn Git?

Đã có quá nhiều cuộc chiến nổ ra khi bàn về ưu điểm nhược điểm của Git so với các công cụ quản lý source code tập trung khác (như CVS, SVN). Là một developer, tôi cảm thấy yêu thích Git hơn. Git thực sự đã thay đổi cách suy nghĩ về merging và branching. Những ai đã từng làm việc với CVS/Subversion đều hiểu merging/branching không hề đơn giản, trong tài liệu về CVS/Subversion branching và merging chỉ được nhắc đến ở chapter cuối, dành cho các users có kinh nghiệm. Còn với Git, branching/merging là một phần trong workflow hàng ngày của bạn, được mô tả ở những phần đầu tiên trong Git book.

Tham khảo thêm: Những lợi ích của việc dùng Git

Các nhánh (Branch) trong git-flow

Git-Flow gồm có 2 nhánh chính là Master và Develop, 3 nhánh Phụ gồm: Feature, Release,HotFix. Tương ứng với mỗi loại Nhánh sẽ có chức năng khác nhau. Hiện tại có rất nhiều Công cụ quản trị Git hỗ trợ Git-flow tốt nhất đó là Source-Tree  miễn phí nữa, còn có phí cao cấp hơn tí là GitKraken.

Nhánh Master branch

Branch master là branch được tạo mới repository và tạo mặc định trong Git. Những người mới bắt đầu thường có xu hướng commit trực tiếp và branch master, nhưng trong git-flow thì ta không commit trực tiếp vào master, mà đây chỉ là branch dùng để thực hiện merge, nên chúng ta lưu ý nhé.

Git Flow là gì?

Nhánh origin/master được coi là nhánh chính với HEAD phản ánh trạng thái production-ready.

Nhánh Develop branch

Branch develop là branch trung tâm cho việc phát triển. Do với mỗi thay đổi ta lại ngắt branch feature tương ứng cho nên có thể nói đây là branch được dùng nhiều nhất trong quá trình phát triển. Cần đặt tên branch sao cho người khác có thể biết được ngay nội dung thay đổi là gì. Mỗi branch được ngắt ra để làm n ày sau khi làm xong ta lại merge vào develop, merge xong sẽ xóa nó đi.

Nhánh origin/develop được coi là nhánh chính với HEAD phản ánh trạng thái thay đổi mới nhất trong quá trình phát triển, chuẩn bị cho release tiếp theo.

Nhánh Release branch

  1. Tách từ: develop
  2. Merge vào: develop và master
  3. Naming convention: release-*

Branch release là branch dùng để release sản phẩm như đúng tên gọi của nó. Khi release sản phẩm thì có rất nhiều những task liên quan khác cần thiết nữa, những task liên quan đó sẽ được release trên branch release mà ta ngắt ra từ branch develop. Sau khi release xong, sẽ merge vào branch master và branch develop, ghi release tag vào merge commit của branch master sau đó xóa branch release đi.

Git Flow là gì?

Release branches được sử dụng để chuẩn bị cho release bản production mới. Tất cả các công việc cuối cùng trước khi release sẽ được thực hiện ở đây, ngoài ra còn để fix nốt các bugs lẻ tẻ, chuẩn bị meta-data (version number, build dates, etc..). Nhờ việc tách nhánh ra khỏi develop, chúng ta có thể tiếp tục phát triển các features cho đợt release khác một cách bình thường.

Thời điểm được lựa chọn để tách nhánh từ develop là khi develop phản ánh được trạng thái mong muốn cho việc release mới. Ít nhất lúc đó tất cả các features dành cho đợt release phải được merge vào develop rồi. Những features nhắm đến các lần release sau thì chưa được merge vào, phải đợi sau khi tách nhánh.

Chúng ta sẽ tiến hành đánh version theo rule của dự án ngay sau khi tạo release branch.

Nhánh Hotfix branch

  1. Tách từ: master
  2. Merge vào: develop và master
  3. Naming convention: hotfix-*

Khi release sản phẩm cũng có khi ta phát hiện ra bug rất nghiêm trọng, chắc hẳn mọi người cũng từng trải qua vấn đề này rồi nhỉ? Những lúc như vậy ta sẽ ngắt ra branch hotfix trực tiếp từ branch master để tiến hành sửa, sau khi sửa xong sẽ merge vào master và develop và ghi lại release tag. Sau đó sẽ xóa branch hotfix đi.

Git Flow là gì?

Hotfix branches cũng giống release branches ở chỗ được sử dụng để chuẩn bị cho việc release production mới, chỉ khác ở chỗ là ko có plan từ trước. Khi có một bug nghiêm trọng trên bản production cần được giải quyết ngay lập tức, một hotfix branch sẽ được tách ra từ master và được đánh version để nhận biết.

Ưu điểm của việc tách nhánh này ở chỗ các team members khác có thể tiếp tục công việc ở develop trong khi những người khác có thể tập trung vào fix bug của production.

Nhánh Feature branch

  1. Tách từ: develop
  2. Merge vào: develop
  3. Naming convention: tự do, ngoại trừ master, develop, release-*, hotfix-*

Feature branches (hay còn gọi là topic branches) được sử dụng để phát triển các feature mới phục vụ cho release sau này. Khi bắt đầu phát triển một chức năng, có thể chưa rõ được thời điểm chức năng đó được tích hợp vào hệ thống và release. Feature branch sẽ tồn tại trong quá trình chức năng được phát triển, cuối cùng sẽ được merge lại vào develop (khi quyết định lần release tới bao gồm chức năng đó) hoặc bị bỏ đi (khi thấy chức năng không còn cần thiết).

Git Flow là gì?

Về cơ bản thì feature branches chỉ tồn tại ở repos của developers, chứ ko phải ở origin.

Kết luận

Các bạn chắc hẳn đã nắm được bước thực hiện khi sử dụng git-flow rồi nhỉ. Nhất định hãy vận dụng thuần thục nó vào thực tế trong các dự án Thiết kế website hoặc lập trình phần mềm nhé. Tôi bổ sung thêm, trong số branch model của Git, ngoài ra còn rất nhiều các kiểu model khác như là GitHub Flow, GitLab Flow, với mỗi sắc thái ưu điểm nhược điểm riêng nên chúng ta cũng sẽ cùng tìm hiểu thêm về các model khác đó nữa nhé.

Tham khảo thêm: Những lệnh Git command hữu ích nhất bắt buộc phải biết

Đ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).

Ở công ty LPTech, chúng tôi sử dụng Git như một công cụ quản lý dự án không thể thiếu được, Các dự án thiết kế website của chúng tôi đều sử dụng git và tích hợp  CI/CD vào dựa trên Git mà hoạt động rất hiệu quả.

Liên hệ tư vấn - LPTech

Thông tin liên hệ

Nếu bạn có thắc mắc gì, có thể gửi yêu cầu cho chúng tôi, và chúng tôi sẽ liên lạc lại với bạn sớm nhất có thể .

Công ty TNHH TMĐT Công nghệ LP

Giấy phép kinh doanh số 0315561312/GP bởi Sở Kế Hoạch và Đầu Tư TP. Hồ Chí Minh.

Văn phòng: Lầu 4, Toà nhà Lê Trí, 164 Phan Văn Trị, Phường 12,Quận Bình Thạnh, HCMC

Hotline: 0338 586 864

Mail: sales@lptech.asia

Zalo OA:LP Tech Zalo Official

Zalo Sales:033 85 86 86 64 (Sales)


Bài viết cùng chuyên mục

Bộ nhận diện thương hiệu gồm những gì? Tại sao lại cần có nhận diện thương hiệu chuẩn

Bộ nhận diện thương hiệu gồm những gì? Tại sao...

Bộ nhận diện thương hiệu được sử dụng để xây dựng và truyền tải hình ảnh của một doanh nghiệp đến với khách hàng. Vậy bộ nhận diện thương...

NodeJS là gì? Tổng hợp kiến thức cơ bản về Node.JS

NodeJS là gì? Tổng hợp kiến thức cơ bản về Node.JS

Node JS là nền tảng phát triển dựa trên V8 Javascript engine của Chrome. Nó là nền tảng có thể mở rộng và được dùng để phát triển thêm...

Mạng máy tính là gì? Thành phần và lợi ích của mạng máy tính

Mạng máy tính là gì? Thành phần và lợi ích của...

Mạng máy tính là gì? Đây là hệ thống hoạt động bằng cách kết nối nhiều thiết bị máy tính lại với nhau để trao đổi và chia sẻ dữ liệu, tài...

SQL Server là gì? Hướng dẫn cách tải và cài đặt SQL Server

SQL Server là gì? Hướng dẫn cách tải và cài đặt...

SQL (Structured Query Language) server được thiết kế để quản lý cơ sở dữ liệu quan hệ. SQL server cung cấp cho người dùng các tính năng...

Cloudflare là gì? Nên dùng Cloudflare cho website hay không?

Cloudflare là gì? Nên dùng Cloudflare cho website...

Cloudflare là một DNS trung gian, được thiết kế để điều phối lưu lượng truy cập bằng lớp bảo vệ của Cloudflare. Cloudflare nằm giữa kết...

Stackoverflow là gì? Tại sao lập trình viên không nên lạm dụng stackoverflow

Stackoverflow là gì? Tại sao lập trình viên không...

Stackoverflow là nền tảng trao đổi kiến thức và giải đáp thắc mắc dành cho các lập trình viên trên toàn thế giới. Tìm hiểu cách dùng...

Sứ mệnh của LPTech ?

LPTech luôn đặt mình vào khách hàng để hiểu được bạn đang gặp khó khăn gì? Các doanh nghiệp hiện nay đang gặp khó khăn về việc quản lý vận hành website của mình. Chưa tìm được đối tác ưng ý và an toàn để giao trọn trọng trách quản lý website cho của bạn.

Thiết kế website nhưng lại không thể tăng thu nhập cũng như chưa có đối tác làm Dịch vụ SEO uy tín tin cậy. Chúng tôi hiểu được điều đó nên dành cả tâm huyết của mình để có thể hỗ trợ các doanh nghiệp một cách tốt nhất.