0
0
Lập trình
Admin Team
Admin Teamtechmely

Nâng cao quy trình làm việc với GitFlow: Chiến lược phân nhánh hiệu quả

Đăng vào 8 tháng trước

• 5 phút đọc

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à developmaster, 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ả masterdevelop.

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 Copy
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 Copy
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 Copy
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 Copy
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 Copy
git checkout master && git merge release/1.0.0

Gán nhãn cho bản phát hành:

bash Copy
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 Copy
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 Copy
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 Copy
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 Copy
git checkout master && git merge hotfix/critical-bug

Gán nhãn cho sửa lỗi:

bash Copy
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 Copy
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 Copy
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 Copy
# 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 Copy
# 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 Copy
# 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ừ developmaster để 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 developmaster 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ả.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào