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à:
- Nhánh develop được tạo từ nhánh main.
- Nhánh release được tạo từ nhánh develop.
- Các nhánh feature được tạo từ nhánh develop.
- Khi một feature hoàn thành, nó được hợp nhất vào nhánh develop.
- Khi nhánh release hoàn thành, nó được hợp nhất vào cả nhánh develop và main.
- Nếu phát hiện lỗi trong nhánh main, một nhánh hotfix được tạo từ nhánh main.
- 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