GitFlow: Chiến lược phân nhánh giúp quản lý quy trình phát triển
GitFlow là một mô hình phân nhánh cho Git giúp quản lý phát triển, phát hành và bảo trì mã nguồn của bạn. Mô hình này giới thiệu hai nhánh chính là develop và master, cùng với các nhánh bổ sung cho các tính năng, phát hành và sửa lỗi. Mô hình này cho phép bạn phân tách mã cho phát triển, staging và sản xuất, giúp dễ dàng hơn trong việc quản lý các bản phát hành và sửa lỗi.
Chiến lược phân nhánh
1. Nhánh Master/Main
Nhánh này đại diện cho trạng thái mã của bạn đã sẵn sàng cho sản xuất. Tất cả các commit vào nhánh này đều được coi là các bản phát hành.
2. Nhánh Develop
Nhánh này phục vụ như là nhánh tích hợp cho các tính năng. Nó chứa các thay đổi phát triển mới nhất và được sử dụng để chuẩn bị cho bản phát hành tiếp theo.
3. Nhánh Tính năng (Feature Branches)
Các nhánh được tạo ra từ nhánh develop để phát triển các tính năng mới. Những nhánh này sẽ được hợp nhất trở lại vào nhánh develop khi hoàn tất.
4. Nhánh Phát hành (Release Branches)
Các nhánh được tạo ra từ develop khi chuẩn bị cho một bản phát hành. Những nhánh này cho phép kiểm tra cuối cùng và sửa lỗi trước khi hợp nhất vào nhánh master.
5. Nhánh Sửa lỗi (Hotfix Branches)
Các nhánh được tạo ra từ master cho những sửa lỗi khẩn cấp cần được triển khai ngay lập tức. Khi đã sửa xong, chúng sẽ được hợp nhất trở lại vào cả master và develop.
Quy trình phân nhánh và hợp nhất
Bước 1: Bắt đầu phát triển
Tạo một Nhánh Tính năng:
- Nhánh được tạo ra từ
develop. - Quy ước đặt tên:
feature/tên-tính-năng
Ví dụ lệnh:
bash
git checkout -b feature/add-login-page develop
Làm việc trên Tính năng: Ghi lại các thay đổi vào nhánh tính năng của bạn.
Hợp nhất Nhánh Tính năng vào Develop:
- Khi tính năng đã hoàn tất và được kiểm tra, hãy hợp nhất nó trở lại vào
develop.
Ví dụ lệnh:
bash
git checkout develop && git merge feature/add-login-page
Xóa nhánh tính năng nếu không còn cần thiết:
bash
git branch -d feature/add-login-page
Bước 2: Chuẩn bị cho một Bản phát hành
Tạo một Nhánh Phát hành:
- Nhánh được tạo ra từ
develop. - Quy ước đặt tên:
release/số-version
Ví dụ lệnh:
bash
git checkout -b release/1.0.0 develop
Hoàn tất Bản phát hành:
- Thực hiện kiểm tra cuối cùng và thực hiện các điều chỉnh cần thiết.
- Ghi lại các thay đổi vào nhánh phát hành.
Hợp nhất Nhánh Phát hành vào Master và Develop:
- Hợp nhất nhánh phát hành vào
masterđể hoàn tất bản phát hành.
Ví dụ lệnh:
bash
git checkout master && git merge release/1.0.0
Gán nhãn cho bản phát hành:
bash
git tag -a v1.0.0 -m "Bản phát hành phiên bản 1.0.0"
Hợp nhất nhánh phát hành lại vào develop để tích hợp bất kỳ sửa lỗi nào:
bash
git checkout develop && git merge release/1.0.0
Xóa nhánh phát hành nếu không còn cần thiết:
bash
git branch -d release/1.0.0
Bước 3: Sửa lỗi khẩn cấp
Tạo một Nhánh Sửa lỗi:
- Nhánh được tạo ra từ
master. - Quy ước đặt tên:
hotfix/mô-tả-vấn-đề
Ví dụ lệnh:
bash
git checkout -b hotfix/critical-bug master
Thực hiện Sửa lỗi: Thực hiện các sửa đổi cần thiết và ghi lại các thay đổi vào nhánh sửa lỗi.
Hợp nhất Nhánh Sửa lỗi vào Master và Develop:
- Hợp nhất nhánh sửa lỗi vào
masterđể triển khai bản sửa lỗi ngay lập tức.
Ví dụ lệnh:
bash
git checkout master && git merge hotfix/critical-bug
Gán nhãn cho sửa lỗi:
bash
git tag -a v1.0.1 -m "Phiên bản sửa lỗi 1.0.1"
Hợp nhất nhánh sửa lỗi lại vào develop để đảm bảo rằng sửa lỗi được bao gồm trong các bản phát hành sau.
Ví dụ lệnh:
bash
git checkout develop && git merge hotfix/critical-bug
Xóa nhánh sửa lỗi nếu không còn cần thiết:
bash
git branch -d hotfix/critical-bug
Ví dụ Quy trình
Tạo và Hợp nhất một Tính năng
bash
# Bắt đầu một tính năng mới
git checkout develop
git checkout -b feature/new-dashboard
# Làm việc trên tính năng, sau đó ghi lại
git add .
git commit -m "Thêm tính năng bảng điều khiển mới"
# Hợp nhất tính năng vào develop
git checkout develop
git merge feature/new-dashboard
# Xóa nhánh tính năng
git branch -d feature/new-dashboard
Chuẩn bị và Phát hành
bash
# Bắt đầu một bản phát hành
git checkout develop
git checkout -b release/1.0.0
# Hoàn tất bản phát hành, sau đó ghi lại
git add .
git commit -m "Chuẩn bị phát hành 1.0.0"
# Hợp nhất bản phát hành vào master
git checkout master
git merge release/1.0.0
git tag -a v1.0.0 -m "Bản phát hành phiên bản 1.0.0"
# Hợp nhất bản phát hành vào develop
git checkout develop
git merge release/1.0.0
# Xóa nhánh phát hành
git branch -d release/1.0.0
Xử lý một Sửa lỗi khẩn cấp
bash
# Bắt đầu một sửa lỗi
git checkout master
git checkout -b hotfix/critical-bug
# Thực hiện sửa lỗi, sau đó ghi lại
git add .
git commit -m "Sửa lỗi nghiêm trọng"
# Hợp nhất sửa lỗi vào master
git checkout master
git merge hotfix/critical-bug
git tag -a v1.0.1 -m "Phiên bản sửa lỗi 1.0.1"
# Hợp nhất sửa lỗi vào develop
git checkout develop
git merge hotfix/critical-bug
# Xóa nhánh sửa lỗi
git branch -d hotfix/critical-bug
Thực tiễn tốt nhất
- Kéo thay đổi thường xuyên: Thường xuyên kéo từ
developvàmasterđể giữ cho các nhánh của bạn luôn cập nhật. - Sử dụng Pull Requests: Sử dụng pull requests để hợp nhất các nhánh nhằm đảm bảo có các đánh giá mã và thảo luận.
- Giữ các commit nhỏ: Thực hiện các commit nhỏ, theo từng bước với các thông điệp mô tả rõ ràng.
- Gán nhãn cho các bản phát hành: Gán nhãn cho các bản phát hành trong
masterđể theo dõi các phiên bản và dễ dàng phục hồi nếu cần thiết.
Tóm tắt
Chuyển sang phương pháp GitFlow với các nhánh develop và master sẽ cải thiện quy trình làm việc phát triển của bạn bằng cách phân tách rõ ràng các giai đoạn phát triển, phát hành và quản lý sửa lỗi. Bằng cách làm theo chiến lược phân nhánh này, bạn có thể quản lý các tính năng, bản phát hành và sửa lỗi khẩn cấp một cách có cấu trúc và hiệu quả.