Tổng quan về Gitflow

2 min read

Tìm hiểu về Gitflow

Gitflow chỉ là một ý tưởng trừu tượng về quy trình sử dụng Git, Nó chỉ ra cách thức setup các loại branches khác nhau và cách thức để merge chúng lại với nhau.

Các branch chính

Main branches

Nhánh chính, chứa mã nguồn ổn định và đã kiểm thử hoàn chỉnh. Phiên bản ổn định được phát hành từ nhánh master.

Developer branches

Nhánh chính, chứa mã nguồn ổn định và đã kiểm thử hoàn chỉnh. Phiên bản ổn định được phát hành từ nhánh master.

git branch develop
git push -u origin develop

Feature branches

Mỗi tính năng mới được phát triển trong một nhánh riêng gọi là feature branch. Khi tính năng hoàn thành, nó sẽ được tích hợp lại vào nhánh develop.

git checkout develop
git checkout -b feature_branch

//Merge the feature_branch into develop
git checkout develop
git merge feature_branch

Release branches

Sau khi develop đã có đủ tính năng cho một bản phát hành (hoặc ngày phát hành được xác định trước đang đến gần), bạn tách một release từ nhánh của develop. Việc tạo nhánh này sẽ bắt đầu chu kỳ phát hành tiếp theo, do đó, không thể thêm tính năng mới nào sau thời điểm này, chỉ các bản sửa lỗi, tạo tài liệu và các tác vụ định hướng phát hành khác mới được thực hiện trong nhánh này.

git checkout develop
git checkout -b release/0.1.0

//Merge the release into main
git checkout main
git merge release/0.1.0

Hotfix branches

Nếu phát hiện lỗi trong sản phẩm đã được phát hành, một nhánh hotfix branch được tạo từ nhánh main để sửa lỗi. Sau khi sửa lỗi, thay đổi được tích hợp lại cả vào nhánh main và develop.

git checkout main
git checkout -b hotfix_branch

//Hotfix branch gets merged into both main and develop.
git checkout main
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch

Ví dụ

Một ví dụ hoàn chỉnh thể hiện một luồng Feature Branch như sau. Giả sử chúng ta có một kho chứa được thiết lập với main branch.

git checkout main
git checkout -b develop
git checkout -b feature_branch

git checkout develop
git merge feature_branch
git checkout main
git merge develop
git branch -d feature_branch

Ngoài luồng feature và release, một ví dụ về hotfix có thể được mô tả như sau:

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

Tổng kết

Luồng tổng quan của Gitflow là:

  1. Nhánh develop được tạo từ nhánh main.
  2. Nhánh release được tạo từ nhánh develop.
  3. Các nhánh feature được tạo từ nhánh develop.
  4. Khi một feature hoàn thành, nó được hợp nhất vào nhánh develop.
  5. Khi nhánh release hoàn thành, nó được hợp nhất vào cả nhánh develop và main.
  6. Nếu phát hiện lỗi trong nhánh main, một nhánh hotfix được tạo từ nhánh main.
  7. Khi hotfix hoàn thành, nó được hợp nhất vào cả nhánh develop và main.

Tài liệu tham khảo

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *