Commit
Đặt 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
Trong đó:
- Feat: tạo 1 nhánh feature mới hoàn toàn và code trong nhánh đó.
- 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. (VD: thêm các Testcase liên quan đến hàm)
- Chore: Là những thay đổi không liên quan đến source code hay test
Ví dụ:
docs: change cmd run code
feat(lang): added vietnamese language
feat: allow provided config object to extend other configs
Lưu Ý
Commit
bắt buộc được có tiền tố với một loại, bao gồm một danh từ nhưfeat
,fix
, v.v., theo sau là dấu hai chấm và description.feat
được sử dụng khi một commit thêm một tính năng mới vào ứng dụng hoặc thư viện của bạn.- Loại
fix
được sử dụng khi một commit đại diện cho việc sửa lỗi trong ứng dụng của bạn. - Scope có thể tùy biến thêm vào sao type tùy theo trường hợp cụ thể.
- example :
feat(lang)
- Mô tả bắt buộc phải nằm sau type. Mô tả là một mô tả ngắn gọn về các thay đổi trong mã, ví dụ:
fix: array parsing issue when multiple spaces were contained in string
. - Mục footer có thể được phân biệt sau 1 dấu cách. Example:
Fixes #13
. - 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.
- Bắt buộc phải có 1 mô tả ở đằng sau BREAKING CHANGE.
- Các loại khác ngoài
feat
vàfix
CÓ THỂ được sử dụng trong tin nhắn commit của bạn.
Issue
- Với Issue khi xảy ra 1 vẫn đề xuất hiện cần giải quyết khi đó leader có thể giao việc cho các thành viên trong nhóm thông qua mục issue trên GitHub
- Khi leader tạo sẽ
Assignees
ai là người làm nhiệm vụ đó, có thể thêmLabels
vào để có thể hiểu thêm về nhiệm vụ cần làm, có thì thêmProjects
vào và mộtbranch
cụ thể. Nếu thêm branch vào thì Issue đó sẽ được gắn trực tiếp đế branch đó Đây là ví dụ cụ thể hơn
ví dụ trên mình tự tạo 1 Issue là CRUD Quizz trong dự án của mình và Assignees cho mình và Label là Feature. => Lưu ý khi commit thì mn nên thêm #<số thứ tự issue> thì phần issue sẽ hiểu và tự chuyển commit hay merge qua issue có số thứ tự đó để dễ theo dõi.
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
main
(hoặcmaster
)- Chứa mã nguồn đã phát hành.
- Luôn ở trạng thái ổn định.
develop
- 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.
Supporting Branches
-
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ánhnhánh
develop
.
- Được tạo trực tiếp từ nhánh
-
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ả
main
vàdevelop
.
- Được tạo từ
-
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ả
main
vàdevelop
.
- Được tạo từ
-
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
.
- Được tạo từ
Khi tạo nhánh mới từ nhanh dev thì đặt tên là feature/<tên feature>.
Khi nhánh mới được tạo ra từ nhanh main sẽ có tên là hotfix/<tên nhanh>