Mục tiêu: dễ làm việc nhóm, dễ review, dễ release.
-
main: nhánh stable (luôn build/CI xanh).- Chỉ nhận merge từ PR đã review.
- Mỗi lần release/tag thì merge vào
main.
-
develop(khuyến nghị): nhánh tích hợp trước khi lênmain.- Dev hằng ngày merge vào
develop. - Khi ổn thì tạo PR
develop -> main.
- Dev hằng ngày merge vào
Nếu team nhỏ: có thể bỏ
developvà làm trực tiếp theo PR vàomain(nhưng vẫn phải dùng branch prefix bên dưới).
Format chuẩn (khuyên dùng):
<prefix>/<ticket-or-date>-<short-slug>
Prefix dùng trong dự án:
feature/— tính năng mớifix/— sửa bughotfix/— sửa gấp trên productionchore/— việc “lặt vặt” không đổi hành vi (configs, tooling, refactor nhỏ)docs/— tài liệurefactor/— refactor lớntest/— thêm/sửa testci/— CI/CD, workflows
Ví dụ:
feature/CSN-12-settings-uifix/CSN-19-login-role-bugchore/2026-02-14-update-eslintdocs/CSN-01-readme-finalci/CSN-30-github-actions-build
- Từ
develop(hoặcmainnếu không dùng develop). - Không commit trực tiếp lên
main.
- Mô tả rõ What/Why/How.
- Link Issue/Ticket (nếu có).
- Checklist test tối thiểu (build ok, chạy app ok).
- Khuyến nghị Squash & Merge để lịch sử sạch.
- Hoặc Rebase nếu team quen.
- Ít nhất 1 reviewer (team nhỏ) / 2 reviewer (team lớn).
- CI phải xanh trước khi merge.
Format:
<type>(scope): <subject>
Types chuẩn:
feat: thêm tính năngfix: sửa bugdocs: tài liệustyle: format, không đổi logicrefactor: refactor codetest: testchore: tooling, configs, depsci: workflow, pipelineperf: tối ưu hiệu năngbuild: build system
Ví dụ hợp lệ:
feat(settings): add whitelist & blacklist UIfix(auth): handle role in login responsechore(ci): update node version in workflow
- Dùng tag dạng:
vMAJOR.MINOR.PATCH - Ví dụ:
v1.0.0,v1.1.0
Dùng chore khi:
- Update dependencies / eslint / prettier / tsconfig
- Thêm script build, chỉnh workflow
- Refactor nhỏ không đổi behavior
- Dọn file, đổi tên folder, chỉnh config
Không dùng chore cho:
- Thêm tính năng (dùng
feat) - Sửa bug (dùng
fix)