Nguyen Nhat Hao - Portfolio
Blog

My Blog

Git Flow - Giải Pháp Tối Ưu Cho Quản Lý Dự Án Phần Mềm

Commit

Đặc tả commit là một định dạng chuẩn hóa cho các thông báo commit, giúp tạo ra lịch sử commit rõ ràng, dễ hiểu và tự động hóa các quy trình phát hành.

<type>[optional scope]: <description>

[optional body]

[optional footer]

type là các loại tùy biến thay đổi trong thực tế như: feat, fix, docs, style, refactor, perf, test, chore.

Thông thường theo chuẩn Angular Conventional Commit.

Trong đó:

  • feat: Tạo 1 nhánh feature mới hoàn toàn và code trong nhánh đó hoặc thêm một tính năng mới trong code.
  • fix: Áp dụng khi bạn thay đổi code trên một đoạn code hay một file code đã tồn tại.
  • docs: Thay đổi trong file liên quan đến đuôi .md.
  • style: Thay đổi lại nhưng không ảnh hưởng đến code (vd : formatting).
  • refactor: Là những thay đổi cấu trúc lại code và không thay đổi gì trong code hay thêm feature mới. (VD: cấu trúc lại 1 đoạn code có sẳn).
  • perf: (Performance) Thay đổi mã giúp cải thiện hiệu suất. (VD: giảm thời gian query).
  • test: Thêm các tính năng kiểm thử trong code.
  • chore: Là những thay đổi không liên quan đến source code hay test.

Các thay đổi quan trong ảnh hưởng đến code một cách trực tiếp thì cần có BREAKING CHANGE trong phần body. Example :

feat: thêm tính năng đăng nhập bằng email
    BREAKING CHANGE: trường 'username' đã được thay thế bởi 'email' trong cấu trúc dữ liệu người dùng. 

Branch

Về việc tạo nhánh và phân quyền để giải quyết một là một điều vô cùng quan trọng trong GitFlow nó sẽ ảnh hưởng đến tốc độ hoàn thành dự án vì được chia cụ thể tránh xảy ra xung đột với nhau.

Main Branches

1. Nhánh main (hoặc master)

  • Chứa mã nguồn đã phát hành.
  • Luôn ở trạng thái ổn định. image

2. Nhánh dev

  • Là nhánh phát triển chính.
  • Chứa mã nguồn kết hợp tất cả các nhánh tính năng và sửa lỗi đã hoàn thiện. image

Supporting Branches

1. Feature Branches

  • Được tạo trực tiếp từ nhánh develop.
  • Được sử dụng để phát triển tính năng mới.
  • Tên nhánh theo định dạng: feature/<tên-tính-năng>.
  • Khi hoàn thành sẽ được hợp nhất vào nhánh develop. image

2. Release Branches

  • Được tạo từ develop khi chuẩn bị phát hành một phiên bản mới.
  • Được sử dụng để hoàn thiện và kiểm tra phiên bản trước khi phát hành.
  • Tên nhánh theo định dạng: release/<số-phát-hành>.
  • Khi hoàn thành, hợp nhất vào cả maindevelop. image

3. Hotfix Branches

  • Được tạo từ main để sửa lỗi khẩn cấp trong phiên bản đã phát hành.
  • Được sử dụng để giải quyết các vấn đề nghiêm trọng mà không cần chờ phát hành tiếp theo.
  • Tên nhánh theo định dạng: hotfix/<số-sửa-lỗi>.
  • Khi hoàn thành, hợp nhất vào cả maindevelop. image

4. Bugfix Branches

  • Được tạo từ develop để sửa lỗi phát sinh trong quá trình phát triển.
  • Được sử dụng để giải quyết các vấn đề trong mã nguồn đang phát triển.
  • Tên nhánh theo định dạng: bugfix/<tên-sửa-lỗi>.
  • Khi hoàn thành, hợp nhất vào develop.
GitFlow
Copyright @nxhawk