Chuyển tới nội dung chính

3.11 — 9. Conventional Commits

Mục tiêu bài học

  • Nắm được ý chính của bài và mối liên hệ với module.
  • Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
  • Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.

Nội dung bài học

3.11.1 — Tại sao cần chuẩn hóa commit message?

Một lịch sử commit như thế này hoàn toàn vô nghĩa:

fix
aaa
test123
cuoi cung xong roi
update

Trong khi đây là lịch sử commit của team chuyên nghiệp:

feat(crm): add customer search by name and phone number
fix(crm): resolve null reference when customer has no address
refactor(auth): extract token validation to middleware
test(crm): add unit tests for CustomerService.SearchAsync
docs(api): update Swagger description for customer endpoints

Commit message tốt giúp: đồng đội hiểu thay đổi không cần đọc code, tự động tạo CHANGELOG, dễ git bisect khi tìm commit gây ra bug.

3.11.2 — Format chuẩn Conventional Commits

<type>(<scope>): <mô tả ngắn gọn>

[body tùy chọn — giải thích tại sao, không phải cái gì]

[footer tùy chọn — BREAKING CHANGE, Refs #123]

Các type phổ biến:

TypeÝ nghĩaVí dụ cho CRM
featTính năng mớifeat(crm): add customer import from CSV
fixSửa bugfix(crm): customer search returns 500 on empty query
refactorCải thiện coderefactor(crm): extract search logic to specification pattern
testThêm/sửa testtest(crm): add integration tests for CustomerController
docsTài liệudocs(crm): add API usage examples in Swagger
choreCông việc bảo trìchore: update NuGet packages to latest stable
perfCải thiện hiệu năngperf(crm): add index on customer email column

Breaking change — khi thay đổi phá vỡ API hiện tại:

git commit -m "feat(crm)!: rename GetCustomer to GetCustomerById

BREAKING CHANGE: API endpoint /api/customers/{id} now requires authentication header"

3.11.3 — Cấu hình commitlint để enforce chuẩn (tuỳ chọn)

Trong dự án có thể dùng commitlint + husky để tự động reject commit không đúng format:

npm install --save-dev @commitlint/cli @commitlint/config-conventional husky

Bài tập áp dụng

  1. Tóm tắt bài học bằng ngôn ngữ của bạn.
  2. Liên hệ nội dung với một tình huống thực tế trong dự án.
  3. Đề xuất một cải tiến cụ thể sau khi học bài này.

Tự kiểm tra

  • Bạn có thể giải thích lại nội dung chính trong 2 phút không?
  • Bạn có ví dụ áp dụng thực tế chưa?
  • Bạn biết bước tiếp theo cần học/triển khai là gì không?

Kết luận

Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.

Điều hướng