Git: Quy trình công việc Gitflow


Đăng ký nhận thông báo về những video mới nhất

Quy trình công việc Gitflow là một thiết kế dòng công việc Git được xuất bản lần đầu tiên và được phổ biến bởi Vincent Driessen tại nvie. Quy trình công việc Gitflow định nghĩa một mô hình phân nhánh nghiêm ngặt được thiết kế xung quanh bản phát hành dự án. Điều này cung cấp một khuôn khổ mạnh mẽ để quản lý các dự án lớn hơn.

Gitflow phù hợp lý tưởng cho các dự án có chu kỳ phát hành theo lịch trình. Quy trình công việc này không thêm bất kỳ khái niệm hoặc lệnh mới nào ngoài những gì cần thiết cho  Quy trình chi nhánh tính năng . Thay vào đó, nó gán các vai trò rất cụ thể cho các nhánh khác nhau và xác định cách thức và thời điểm chúng nên tương tác. Ngoài featurecác nhánh, nó sử dụng các nhánh riêng lẻ để chuẩn bị, duy trì và ghi lại các bản phát hành. Tất nhiên, bạn cũng có thể tận dụng tất cả các lợi ích của Quy trình làm việc của Chi nhánh tính năng: yêu cầu kéo, thử nghiệm tách biệt và cộng tác hiệu quả hơn.

Bắt đầu

Gitflow thực sự chỉ là một ý tưởng trừu tượng của quy trình công việc Git. Điều này có nghĩa là nó ra lệnh loại chi nhánh nào được thiết lập và làm thế nào để hợp nhất chúng lại với nhau. Chúng tôi sẽ chạm vào mục đích của các chi nhánh dưới đây. Bộ công cụ git-Flow là một công cụ dòng lệnh thực tế có quá trình cài đặt. Quá trình cài đặt cho git-Flow rất đơn giản. Các gói cho git-Flow có sẵn trên nhiều hệ điều hành. Trên các hệ thống OSX, bạn có thể thực thi brew install git-flow. Trên windows bạn sẽ cần tải xuống và cài đặt git-Flow . Sau khi cài đặt git-Flow, bạn có thể sử dụng nó trong dự án của mình bằng cách thực thi git flow init. Git-Flow là một trình bao bọc xung quanh Git. Các git flow initlệnh là một phần mở rộng mặc định git init lệnh và không thay đổi bất cứ điều gì trong kho của bạn khác hơn là tạo ra các chi nhánh cho bạn.

Làm thế nào nó hoạt động

Luồng công việc Git - Chi nhánh lịch sử

Phát triển và làm chủ chi nhánh

Thay vì một masternhánh duy nhất , quy trình công việc này sử dụng hai nhánh để ghi lại lịch sử của dự án. Các masterchi nhánh lưu trữ lịch sử phát hành chính thức, và các developchi nhánh phục vụ như là một chi nhánh tích hợp cho các tính năng. Thật tiện lợi khi gắn thẻ tất cả các cam kết trong masterchi nhánh với số phiên bản.

Bước đầu tiên là bổ sung mặc định mastervới một developnhánh. Một cách đơn giản để làm điều này là cho một nhà phát triển tạo một developnhánh trống cục bộ và đẩy nó đến máy chủ:

git branch develop
git push -u origin develop

Chi nhánh này sẽ chứa toàn bộ lịch sử của dự án, trong khi đó mastersẽ chứa một phiên bản rút gọn. Các nhà phát triển khác hiện nên sao chép kho lưu trữ trung tâm và tạo một nhánh theo dõi chodevelop.

Khi sử dụng thư viện mở rộng luồng git, thực thi git flow inittrên một repo hiện có sẽ tạo ra developnhánh:

$ git flow init
Initialized empty Git repository in ~/project/.git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master]
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []

$ git branch
* develop
 master

Chi nhánh tính năng

Mỗi tính năng mới sẽ nằm trong nhánh riêng của nó, có thể được đẩy đến kho lưu trữ trung tâm  để sao lưu / cộng tác. Nhưng, thay vì phân nhánh masterfeaturecác nhánh sử dụng developlàm nhánh mẹ của chúng. Khi một tính năng hoàn thành, nó sẽ được hợp nhất trở lại để phát triển . Các tính năng không bao giờ nên tương tác trực tiếp với master.

Luồng công việc luồng Git - Chi nhánh tính năng

Lưu ý rằng featurecác nhánh kết hợp với developnhánh là, cho tất cả các ý định và mục đích, Dòng công việc Chi nhánh tính năng. Nhưng, Dòng công việc Gitflow không dừng ở đó.

Featurecác nhánh thường được tạo ra cho developnhánh mới nhất .

Tạo một nhánh tính năng

Không có phần mở rộng dòng git:

git checkout develop
git checkout -b feature_branch

Khi sử dụng phần mở rộng dòng git:

git flow feature start feature_branch

Tiếp tục công việc của bạn và sử dụng Git như bạn thường làm.

Hoàn thiện một nhánh tính năng

Khi bạn hoàn thành công việc phát triển trên tính năng, bước tiếp theo là hợp nhất feature_branchvào develop.

Không có phần mở rộng dòng git:

git checkout develop
git merge feature_branch

Sử dụng các phần mở rộng dòng git:

git flow feature finish feature_branch

Chi nhánh phát hành

Luồng công việc Git - Chi nhánh phát hành

Once develop has acquired enough features for a release (or a predetermined release date is approaching), you fork a releasebranch off of develop. Creating this branch starts the next release cycle, so no new features can be added after this point—only bug fixes, documentation generation, and other release-oriented tasks should go in this branch. Once it's ready to ship, the releasebranch gets merged into master and tagged with a version number. In addition, it should be merged back into develop, which may have progressed since the release was initiated.

Sử dụng một nhánh chuyên dụng để chuẩn bị các bản phát hành giúp một nhóm có thể đánh bóng bản phát hành hiện tại trong khi một nhóm khác tiếp tục làm việc với các tính năng cho bản phát hành tiếp theo. Nó cũng tạo ra các giai đoạn phát triển được xác định rõ ràng (ví dụ, thật dễ dàng để nói, Tuần này chúng tôi đang chuẩn bị cho phiên bản 4.0, và thực sự thấy nó trong cấu trúc của kho lưu trữ).

Làm releasechi nhánh là một hoạt động phân nhánh đơn giản. Giống như featurecác chi nhánh, releasecác chi nhánh được dựa trên developchi nhánh. Một releasenhánh mới có thể được tạo bằng các phương pháp sau.

Không có phần mở rộng dòng git:

git checkout develop
git checkout -b release/0.1.0

Khi sử dụng các phần mở rộng dòng git:

$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'

Khi bản phát hành đã sẵn sàng để xuất xưởng, nó sẽ được hợp nhất vào đó mastervà developsau đó releasechi nhánh sẽ bị xóa. Điều quan trọng là hợp nhất trở lại developvì các bản cập nhật quan trọng có thể đã được thêm vào releasechi nhánh và chúng cần được truy cập vào các tính năng mới. Nếu tổ chức của bạn nhấn mạnh việc xem xét mã, đây sẽ là một nơi lý tưởng cho yêu cầu kéo.

Để hoàn thành một releasenhánh, sử dụng các phương pháp sau:

Không có phần mở rộng dòng git:

git checkout develop
git merge release/0.1.0

Hoặc với phần mở rộng git-Flow:

git checkout master
git checkout merge release/0.1.0
git flow release finish '0.1.0'

Chi nhánh Hotfix

Luồng công việc luồng Git - Chi nhánh Hotfix

Bảo trì hoặc “hotfix”các chi nhánh được sử dụng để nhanh chóng vá các bản phát hành sản xuất. Hotfixcác nhánh rất giống với releasecác nhánh và featurecác nhánh ngoại trừ chúng dựa trên masterthay vì develop. Đây là chi nhánh duy nhất nên rẽ nhánh trực tiếp master. Ngay sau khi sửa chữa xong, nó sẽ được hợp nhất vào cả hai mastervà develop(hoặc releasechi nhánh hiện tại ) và masternên được gắn thẻ với số phiên bản cập nhật.

Việc có một dòng phát triển chuyên dụng để sửa lỗi cho phép nhóm của bạn giải quyết các vấn đề mà không làm gián đoạn phần còn lại của quy trình làm việc hoặc chờ đợi chu kỳ phát hành tiếp theo. Bạn có thể nghĩ về các chi nhánh bảo trì như các releasechi nhánh ad hoc làm việc trực tiếp với master. Một hotfixnhánh có thể được tạo bằng các phương pháp sau:

Không có phần mở rộng dòng git:

git checkout master
git checkout -b hotfix_branch

Khi sử dụng các phần mở rộng dòng git: 

$ git flow hotfix start hotfix_branch

Tương tự như hoàn thành một releasenhánh, một hotfixnhánh được hợp nhất thành cả hai masterdevelop.

git checkout master
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
$ git flow hotfix finish hotfix_branch

Thí dụ

Một ví dụ hoàn chỉnh thể hiện Dòng nhánh tính năng như sau. Giả sử chúng ta có một thiết lập repo với một masterchi nhánh.

git checkout master
git checkout -develop
git checkout -feature_branch
# work happens on feature branch
git checkout develop
git merge feature_branch
git checkout master
git merge develop
git branch -d feature_branch

Ngoài featurevà releasedòng chảy, một hotfixví dụ như sau:

git checkout master
git checkout -b hotfix_branch
# work is done commits are added to the hotfix_branch
git checkout develop
git merge hotfix_branch
git checkout master
git merge hotfix_branch

Tóm lược

Ở đây chúng tôi đã thảo luận về quy trình làm việc Gitflow. Gitflow là một trong nhiều phong cách làm việc của  Git  mà bạn và nhóm của bạn có thể sử dụng.

Một số điều quan trọng cần biết về Gitflow là:

  • Quy trình công việc là tuyệt vời cho quy trình công việc phần mềm dựa trên phát hành.
  • Gitflow cung cấp một kênh dành riêng cho các hotfix để sản xuất.
     

Lưu lượng chung của Gitflow là:

  1. Một developnhánh được tạo từmaster
  2. Một releasenhánh được tạo từdevelop
  3. Feature các nhánh được tạo ra từ develop
  4. Khi a featurehoàn thành, nó được sáp nhập vào develop nhánh
  5. Khi releasechi nhánh được thực hiện, nó được hợp nhất vào developmaster
  6. Nếu một vấn đề trong masterđược phát hiện, một hotfixnhánh được tạo từmaster
  7. Khi hotfixhoàn thành, nó được hợp nhất với cả hai developmaster
Đăng ký nhận thông báo về những video mới nhất
« Prev: Git: Quy trình công việc rẽ nhánh tính năng
» Next: Git: Quy trình công việc Forking
Copied !!!