first commit
This commit is contained in:
468
docs/GitCommit.md
Normal file
468
docs/GitCommit.md
Normal file
@@ -0,0 +1,468 @@
|
||||
# Huong Dan Viet Git Commit Message Trong Du An
|
||||
|
||||
> **Tham khao:** [Conventional Commits](https://www.conventionalcommits.org/)
|
||||
|
||||
---
|
||||
|
||||
## Muc Luc
|
||||
|
||||
1. [Nguyen Tac Chung](#1-nguyen-tac-chung)
|
||||
2. [Cau Truc Commit Message](#2-cau-truc-commit-message)
|
||||
3. [Cac Loai Type](#3-cac-loai-type)
|
||||
4. [Scope - Pham Vi Thay Doi](#4-scope---pham-vi-thay-doi)
|
||||
5. [Quy Tac Viet Description](#5-quy-tac-viet-description)
|
||||
6. [Commit Message Voi Body Va Footer](#6-commit-message-voi-body-va-footer)
|
||||
7. [Bang Vi Du Day Du](#7-bang-vi-du-day-du)
|
||||
8. [Vi Du Thuc Te Trong Du An](#8-vi-du-thuc-te-trong-du-an)
|
||||
9. [Nhung Loi Thuong Gap](#9-nhung-loi-thuong-gap)
|
||||
10. [Checklist Truoc Khi Commit](#10-checklist-truoc-khi-commit)
|
||||
|
||||
---
|
||||
|
||||
## 1. Nguyen Tac Chung
|
||||
|
||||
Viet commit message chuan giup:
|
||||
|
||||
| # | Loi ich | Mo ta |
|
||||
|---|---------|-------|
|
||||
| 1 | **Doc lich su de dang** | Nhin vao git log biet ngay thay doi gi |
|
||||
| 2 | **Tu dong tao changelog** | Cac tool co the tu dong tao changelog tu commit message |
|
||||
| 3 | **Lien ket voi issue tracker** | De dang trace commit voi task/ticket |
|
||||
| 4 | **Review code hieu qua** | Nguoi review hieu nhanh muc dich cua commit |
|
||||
| 5 | **Tu dong versioning** | Xac dinh phien ban tu dong (semantic versioning) dua tren type |
|
||||
|
||||
---
|
||||
|
||||
## 2. Cau Truc Commit Message
|
||||
|
||||
### Format chung
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
```
|
||||
|
||||
Trong do:
|
||||
|
||||
| Thanh phan | Bat buoc | Mo ta | Vi du |
|
||||
|-----------|----------|-------|-------|
|
||||
| `type` | Co | Loai thay doi (feat, fix, chore...) | `feat` |
|
||||
| `scope` | Khong | Pham vi/module bi anh huong | `auth`, `api`, `user` |
|
||||
| `description` | Co | Mo ta ngan, duoi 50 ky tu, viet hoa dau cau, khong dau cham cuoi | `add Google login` |
|
||||
|
||||
### Format day du (voi body va footer)
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
|
||||
<body>
|
||||
|
||||
<footer>
|
||||
```
|
||||
|
||||
### Vi du nhanh
|
||||
|
||||
```
|
||||
feat(auth): add Google login
|
||||
fix(api): resolve 404 error
|
||||
docs(readme): update install guide
|
||||
chore: update dependencies
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Cac Loai Type
|
||||
|
||||
### Type chinh (thuong dung)
|
||||
|
||||
| Type | Muc dich | Anh huong version | Vi du |
|
||||
|------|---------|-------------------|-------|
|
||||
| `feat` | Them tinh nang moi | MINOR (1.x.0) | `feat(auth): add Google OAuth` |
|
||||
| `fix` | Sua loi | PATCH (1.0.x) | `fix(api): resolve 404 error` |
|
||||
| `docs` | Cap nhat tai lieu | Khong | `docs(readme): update install guide` |
|
||||
| `style` | Doi format/UI khong anh huong logic | Khong | `style: apply prettier formatting` |
|
||||
| `refactor` | Tai cau truc code, khong thay doi chuc nang | Khong | `refactor: simplify UserService logic` |
|
||||
| `perf` | Toi uu hieu nang | PATCH (1.0.x) | `perf: optimize database queries` |
|
||||
| `test` | Them hoac sua test | Khong | `test: add unit tests for AuthService` |
|
||||
| `chore` | Thay doi nho, bao tri, CI/CD | Khong | `chore: update dependencies` |
|
||||
|
||||
### Type bo sung (it dung hon)
|
||||
|
||||
| Type | Muc dich | Vi du |
|
||||
|------|---------|-------|
|
||||
| `build` | Thay doi build system hoac dependencies | `build: upgrade to .NET 8` |
|
||||
| `ci` | Thay doi CI/CD pipeline | `ci: add GitHub Actions workflow` |
|
||||
| `revert` | Hoan tac commit truoc do | `revert: revert feat(auth): add Google login` |
|
||||
|
||||
---
|
||||
|
||||
## 4. Scope - Pham Vi Thay Doi
|
||||
|
||||
Scope la phan **tuy chon** nam trong dau ngoac `()`, xac dinh module/file/module cu the bi anh huong.
|
||||
|
||||
### Danh sach scope khuyen nghi cho du an Clean Architecture
|
||||
|
||||
| Scope | Layer/Module | Vi du |
|
||||
|-------|-------------|-------|
|
||||
| `domain` | MyNewProjectName.Domain | `feat(domain): add Order entity` |
|
||||
| `app` | MyNewProjectName.Application | `feat(app): add CreateUserCommand` |
|
||||
| `infra` | MyNewProjectName.Infrastructure | `feat(infra): configure EF Core DbContext` |
|
||||
| `api` | MyNewProjectName.WebAPI | `fix(api): resolve CORS issue` |
|
||||
| `admin` | MyNewProjectName.AdminAPI | `feat(admin): add dashboard endpoint` |
|
||||
| `contract` | MyNewProjectName.Contracts | `feat(contract): add UserDto` |
|
||||
| `test` | MyNewProjectName.UnitTest | `test(test): add UserService tests` |
|
||||
| `auth` | Module xac thuc | `feat(auth): implement JWT refresh token` |
|
||||
| `cache` | Module caching/Redis | `feat(cache): add Redis caching layer` |
|
||||
| `db` | Database/Migration | `feat(db): add migration for User table` |
|
||||
| `docker` | Docker/Container | `chore(docker): update docker-compose` |
|
||||
| `deps` | Dependencies/NuGet | `chore(deps): update MediatR to v12` |
|
||||
|
||||
### Quy tac scope
|
||||
|
||||
- Viet thuong toan bo
|
||||
- Ngan gon, 1-2 tu
|
||||
- Phai nhat quan trong toan du an
|
||||
- Co the bo qua neu thay doi anh huong nhieu module
|
||||
|
||||
---
|
||||
|
||||
## 5. Quy Tac Viet Description
|
||||
|
||||
### Nen lam
|
||||
|
||||
| Quy tac | Chi tiet | Vi du |
|
||||
|---------|---------|-------|
|
||||
| **Viet hoa chu dau** | Chu dau tien cua description viet hoa | `feat: Add login page` |
|
||||
| **Duoi 50 ky tu** | Giu description ngan gon | `fix: Resolve null reference in UserService` |
|
||||
| **Dung dong tu menh lenh** | Bat dau bang dong tu (add, fix, update, remove...) | `feat: Add user authentication` |
|
||||
| **Khong dau cham cuoi** | Khong ket thuc bang dau `.` | `docs: Update README` |
|
||||
| **Mo ta "lam gi"** | Tap trung vao ket qua, khong phai qua trinh | `fix: Resolve 404 on login redirect` |
|
||||
|
||||
### Khong nen lam
|
||||
|
||||
| Quy tac | Vi du sai | Vi du dung |
|
||||
|---------|----------|-----------|
|
||||
| **Khong viet chung chung** | `fix: Fix bug` | `fix(auth): Resolve token expiration error` |
|
||||
| **Khong qua dai** | `feat: Add new user authentication with JWT and refresh token and role-based access control` | `feat(auth): Add JWT authentication` |
|
||||
| **Khong dung qua khu** | `feat: Added login page` | `feat: Add login page` |
|
||||
| **Khong ghi ten file** | `fix: Fix UserService.cs` | `fix(app): Resolve null ref in user creation` |
|
||||
| **Khong dung tieng Viet trong type** | `feat: Them trang dang nhap` | `feat: Add login page` |
|
||||
|
||||
### Danh sach dong tu khuyen dung
|
||||
|
||||
| Dong tu | Khi nao dung | Vi du |
|
||||
|---------|-------------|-------|
|
||||
| `add` | Them moi | `feat: Add payment gateway` |
|
||||
| `remove` | Xoa bo | `refactor: Remove unused imports` |
|
||||
| `update` | Cap nhat | `docs: Update API documentation` |
|
||||
| `fix` | Sua loi | `fix: Fix null reference exception` |
|
||||
| `resolve` | Giai quyet | `fix: Resolve race condition in checkout` |
|
||||
| `implement` | Hien thuc | `feat: Implement search filter` |
|
||||
| `refactor` | Tai cau truc | `refactor: Refactor UserRepository` |
|
||||
| `optimize` | Toi uu | `perf: Optimize query performance` |
|
||||
| `configure` | Cau hinh | `chore: Configure Serilog logging` |
|
||||
| `migrate` | Di chuyen/migration | `feat: Migrate user table schema` |
|
||||
| `replace` | Thay the | `refactor: Replace raw SQL with EF Core` |
|
||||
| `rename` | Doi ten | `refactor: Rename UserDto to UserResponse` |
|
||||
| `move` | Di chuyen | `refactor: Move validators to shared folder` |
|
||||
| `simplify` | Don gian hoa | `refactor: Simplify error handling logic` |
|
||||
| `extract` | Tach ra | `refactor: Extract email service interface` |
|
||||
|
||||
---
|
||||
|
||||
## 6. Commit Message Voi Body Va Footer
|
||||
|
||||
Khi commit phuc tap, can giai thich them, su dung body va footer:
|
||||
|
||||
### Format
|
||||
|
||||
```
|
||||
<type>(<scope>): <description>
|
||||
<-- dong trong bat buoc
|
||||
<body>
|
||||
<-- dong trong bat buoc
|
||||
<footer>
|
||||
```
|
||||
|
||||
### Vi du 1: Commit co body
|
||||
|
||||
```
|
||||
feat(auth): Add JWT authentication
|
||||
|
||||
Implement JWT-based authentication using IdentityServer.
|
||||
Include access token and refresh token flow.
|
||||
Configure token expiration to 15 minutes for access token
|
||||
and 7 days for refresh token.
|
||||
```
|
||||
|
||||
### Vi du 2: Commit co body va footer (lien ket ticket)
|
||||
|
||||
```
|
||||
fix(api): Resolve 500 error on user creation
|
||||
|
||||
The API was returning 500 when creating a user with an existing email.
|
||||
Added proper validation check before inserting into database.
|
||||
Return 409 Conflict instead of 500 Internal Server Error.
|
||||
|
||||
Resolves: PROJ-1234
|
||||
```
|
||||
|
||||
### Vi du 3: Breaking change
|
||||
|
||||
```
|
||||
feat(api)!: Change response format for all endpoints
|
||||
|
||||
BREAKING CHANGE: All API responses now follow the new standard format:
|
||||
{
|
||||
"success": true,
|
||||
"data": {},
|
||||
"message": "",
|
||||
"errors": []
|
||||
}
|
||||
|
||||
Previous format with flat response body is no longer supported.
|
||||
Clients must update to handle the new wrapper format.
|
||||
|
||||
Resolves: PROJ-5678
|
||||
```
|
||||
|
||||
### Footer keywords
|
||||
|
||||
| Keyword | Muc dich | Vi du |
|
||||
|---------|---------|-------|
|
||||
| `Resolves:` | Dong issue/ticket | `Resolves: PROJ-1234` |
|
||||
| `Closes:` | Dong issue tren GitHub | `Closes: #123` |
|
||||
| `Related:` | Lien quan den issue khac | `Related: PROJ-5678` |
|
||||
| `BREAKING CHANGE:` | Thay doi khong tuong thich nguoc | `BREAKING CHANGE: API response format changed` |
|
||||
| `Co-authored-by:` | Dong tac gia | `Co-authored-by: Name <email>` |
|
||||
| `Reviewed-by:` | Nguoi review | `Reviewed-by: Name <email>` |
|
||||
|
||||
---
|
||||
|
||||
## 7. Bang Vi Du Day Du
|
||||
|
||||
### feat - Them tinh nang moi
|
||||
|
||||
```bash
|
||||
feat(auth): Add Google OAuth login
|
||||
feat(api): Add pagination support for product list
|
||||
feat(domain): Add Order entity with value objects
|
||||
feat(app): Add CreateUserCommand with validation
|
||||
feat(infra): Add Redis caching for product queries
|
||||
feat(admin): Add dashboard statistics endpoint
|
||||
feat(contract): Add OrderResponseDto
|
||||
```
|
||||
|
||||
### fix - Sua loi
|
||||
|
||||
```bash
|
||||
fix(api): Resolve 404 error on login redirect
|
||||
fix(auth): Fix token expiration calculation
|
||||
fix(infra): Resolve database connection timeout
|
||||
fix(app): Fix null reference in GetUserQuery
|
||||
fix(domain): Fix value object equality comparison
|
||||
```
|
||||
|
||||
### docs - Tai lieu
|
||||
|
||||
```bash
|
||||
docs(readme): Update installation guide
|
||||
docs(api): Add Swagger annotations for OrderController
|
||||
docs: Add contributing guidelines
|
||||
docs: Update environment variables documentation
|
||||
```
|
||||
|
||||
### style - Format code
|
||||
|
||||
```bash
|
||||
style: Apply EditorConfig formatting rules
|
||||
style(api): Fix indentation in controllers
|
||||
style: Remove trailing whitespace
|
||||
```
|
||||
|
||||
### refactor - Tai cau truc
|
||||
|
||||
```bash
|
||||
refactor(app): Simplify UserService error handling
|
||||
refactor(infra): Extract IEmailService interface
|
||||
refactor: Move validation logic to domain layer
|
||||
refactor(api): Replace manual mapping with AutoMapper
|
||||
```
|
||||
|
||||
### perf - Toi uu hieu nang
|
||||
|
||||
```bash
|
||||
perf(infra): Optimize database queries with projection
|
||||
perf(api): Add response compression middleware
|
||||
perf(cache): Reduce Redis round trips with pipeline
|
||||
```
|
||||
|
||||
### test - Them/sua test
|
||||
|
||||
```bash
|
||||
test(app): Add unit tests for CreateUserCommand
|
||||
test(domain): Add tests for Order entity validation
|
||||
test(infra): Add integration tests for UserRepository
|
||||
test: Increase code coverage to 80%
|
||||
```
|
||||
|
||||
### chore - Bao tri
|
||||
|
||||
```bash
|
||||
chore: Update NuGet packages
|
||||
chore(deps): Upgrade to .NET 8
|
||||
chore(docker): Update docker-compose configuration
|
||||
chore(ci): Add GitHub Actions build workflow
|
||||
chore: Update .gitignore
|
||||
```
|
||||
|
||||
### build - Build system
|
||||
|
||||
```bash
|
||||
build: Upgrade to .NET 8 SDK
|
||||
build: Add Directory.Build.props for shared config
|
||||
build: Configure multi-stage Docker build
|
||||
```
|
||||
|
||||
### ci - CI/CD
|
||||
|
||||
```bash
|
||||
ci: Add GitHub Actions workflow for PR checks
|
||||
ci: Configure automatic deployment to staging
|
||||
ci: Add SonarQube code analysis step
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Vi Du Thuc Te Trong Du An
|
||||
|
||||
### Luong lam viec mot feature hoan chinh
|
||||
|
||||
Gia su lam task PROJ-101: Them tinh nang dang nhap
|
||||
|
||||
```bash
|
||||
# 1. Tao branch
|
||||
git checkout -b feature/PROJ-101-add-login
|
||||
|
||||
# 2. Them entity va domain logic
|
||||
git commit -m "feat(domain): Add User entity with email and password"
|
||||
|
||||
# 3. Them command/query
|
||||
git commit -m "feat(app): Add LoginCommand with FluentValidation"
|
||||
|
||||
# 4. Them infrastructure
|
||||
git commit -m "feat(infra): Implement UserRepository with EF Core"
|
||||
git commit -m "feat(infra): Add password hashing service"
|
||||
|
||||
# 5. Them API endpoint
|
||||
git commit -m "feat(api): Add AuthController with login endpoint"
|
||||
|
||||
# 6. Them test
|
||||
git commit -m "test(app): Add unit tests for LoginCommand handler"
|
||||
|
||||
# 7. Cap nhat tai lieu
|
||||
git commit -m "docs(api): Add Swagger docs for auth endpoints"
|
||||
|
||||
# 8. Push va tao PR
|
||||
git push origin feature/PROJ-101-add-login
|
||||
```
|
||||
|
||||
### Luong sua loi
|
||||
|
||||
```bash
|
||||
# 1. Tao branch
|
||||
git checkout -b bugfix/PROJ-202-fix-login-error
|
||||
|
||||
# 2. Sua loi
|
||||
git commit -m "fix(auth): Resolve incorrect password validation logic"
|
||||
|
||||
# 3. Them test cho truong hop loi
|
||||
git commit -m "test(auth): Add test for invalid password scenario"
|
||||
|
||||
# 4. Push va tao PR
|
||||
git push origin bugfix/PROJ-202-fix-login-error
|
||||
```
|
||||
|
||||
### Luong hotfix khan cap
|
||||
|
||||
```bash
|
||||
# 1. Tao branch tu main
|
||||
git checkout main
|
||||
git checkout -b hotfix/PROJ-303-fix-sql-injection
|
||||
|
||||
# 2. Sua loi
|
||||
git commit -m "fix(infra): Sanitize SQL parameters to prevent injection
|
||||
|
||||
The raw SQL query in SearchRepository was concatenating user input
|
||||
directly into the query string. Replaced with parameterized query
|
||||
using EF Core's FromSqlInterpolated method.
|
||||
|
||||
Resolves: PROJ-303"
|
||||
|
||||
# 3. Push va tao PR vao main
|
||||
git push origin hotfix/PROJ-303-fix-sql-injection
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Nhung Loi Thuong Gap
|
||||
|
||||
| # | Loi sai | Vi du sai | Vi du dung |
|
||||
|---|--------|----------|-----------|
|
||||
| 1 | **Message qua chung chung** | `fix: Fix bug` | `fix(auth): Resolve token expiration error` |
|
||||
| 2 | **Khong co type** | `Add login page` | `feat: Add login page` |
|
||||
| 3 | **Dung qua khu** | `feat: Added new feature` | `feat: Add new feature` |
|
||||
| 4 | **Qua nhieu thay doi trong 1 commit** | `feat: Add login, register, forgot password` | Tach thanh 3 commit rieng |
|
||||
| 5 | **Commit file khong lien quan** | Commit ca file config lan feature | Chi commit file lien quan |
|
||||
| 6 | **Message tieng Viet** | `feat: Them trang dang nhap` | `feat: Add login page` |
|
||||
| 7 | **Dau cham cuoi** | `feat: Add login page.` | `feat: Add login page` |
|
||||
| 8 | **Khong co scope khi can thiet** | `fix: Fix null reference` | `fix(app): Resolve null ref in GetUserQuery` |
|
||||
| 9 | **Type sai** | `feat: Fix bug` | `fix: Resolve login error` |
|
||||
| 10 | **Description qua dai** | 100+ ky tu tren 1 dong | Giu duoi 50 ky tu, dung body cho chi tiet |
|
||||
|
||||
---
|
||||
|
||||
## 10. Checklist Truoc Khi Commit
|
||||
|
||||
- [ ] Commit message co dung format `<type>(<scope>): <description>` khong?
|
||||
- [ ] Type co chinh xac khong? (feat, fix, docs, style, refactor, perf, test, chore)
|
||||
- [ ] Scope co phan anh dung module bi anh huong khong?
|
||||
- [ ] Description co duoi 50 ky tu khong?
|
||||
- [ ] Description co bat dau bang dong tu menh lenh khong? (add, fix, update...)
|
||||
- [ ] Description co viet hoa chu dau khong?
|
||||
- [ ] Khong co dau cham cuoi trong description?
|
||||
- [ ] Moi commit chi chua 1 thay doi logic duy nhat?
|
||||
- [ ] Commit co lien ket ticket ID khong? (trong scope hoac footer)
|
||||
- [ ] Neu la breaking change, da danh dau `!` va them `BREAKING CHANGE:` trong footer?
|
||||
|
||||
---
|
||||
|
||||
## Tom Tat Nhanh
|
||||
|
||||
```
|
||||
Format: <type>(<scope>): <description>
|
||||
|
||||
Type: feat | fix | docs | style | refactor | perf | test | chore | build | ci | revert
|
||||
|
||||
Scope: domain | app | infra | api | admin | contract | test | auth | cache | db | docker | deps
|
||||
|
||||
Vi du:
|
||||
feat(auth): Add Google OAuth login # scope = "auth" (module authentication)
|
||||
fix(api): Resolve 404 error # scope = "api" (API endpoints)
|
||||
docs(readme): Update install guide # scope = "readme" (file/module cu the)
|
||||
|
||||
feat: Them tinh nang moi (VD: feat(login): Add Google OAuth).
|
||||
fix: Sua loi (VD: fix(api): Resolve 404 error).
|
||||
docs: Cap nhat tai lieu.
|
||||
style: Doi format/UI khong anh huong logic.
|
||||
refactor: Tai cau truc code.
|
||||
perf: Toi uu hieu nang.
|
||||
chore: Thay doi nho (VD: chore: Update dependencies).
|
||||
|
||||
Quy tac:
|
||||
- Type va scope viet thuong
|
||||
- Description viet hoa chu dau, duoi 50 ky tu
|
||||
- Dung dong tu menh lenh (add, fix, update, remove, implement...)
|
||||
- Khong dau cham cuoi
|
||||
- 1 commit = 1 thay doi logic
|
||||
- Lien ket ticket ID khi co the
|
||||
```
|
||||
Reference in New Issue
Block a user