Git là công cụ không thể thiếu trong quy trình phát triển phần mềm hiện đại. Bài viết này sẽ hướng dẫn bạn một quy trình Git toàn diện, từ khi bắt đầu dự án cho đến khi release sản phẩm.
Mục lục
Quy Trình Phát Triển Cơ Bản
Khởi Tạo Dự Án
git init
git add .
git commit -m "Initial commit"
git remote add origin <repository-url>
git push -u origin main
Tạo và Phát Triển Feature Branch
# Tạo branch mới
git checkout main
git pull origin main # Đảm bảo có code mới nhất
git checkout -b feature/new-feature
# Làm việc và commit
git add .
git commit -m "feat: add new feature"
git push -u origin feature/new-feature
Quy Trình Pull Request
- Tạo PR từ feature branch vào main
- Code review
- Sửa code theo feedback
- CI/CD tự động chạy test
Merge và Release
# Sau khi PR được approve
git checkout main
git pull origin main
# Tạo tag và release
git tag -a v1.0.0 -m "Version 1.0.0"
git push origin v1.0.0
Best Practices và Quy Ước
Format Commit Message
# Format chuẩn
<type>(<scope>): <description>
# Ví dụ
feat(auth): add login with Google
fix(api): handle null response
docs(readme): update installation guide
- Types phổ biến
feat
: Thêm tính năng mớifix
: Sửa lỗidocs
: Thay đổi documentationstyle
: Thay đổi không ảnh hưởng đến code (format, spaces, semicolons...)refactor
: Refactor code không thay đổi logictest
: Thêm hoặc sửa testschore
: Các thay đổi về build process, công cụ, thư viện...perf
: Cải thiện performanceci
: Thay đổi CI configurationbuild
: Thay đổi build system hoặc dependenciesrevert
: Revert commit trước đó
- Scopes phổ biến
- Theo components/modules:
auth
: Authentication/Authorizationapi
: API endpointsui
: User interfacedb
: Databasecore
: Core functionalityutils
: Utilitiesconfig
: Configuration
- Theo technical layers:
frontend
backend
middleware
services
models
controllers
views
- Theo functionality:
user
admin
logging
security
cache
search
email
payments
- Theo infrastructure:
docker
k8s
aws
ci
deploy
monitoring
Quy Ước Đặt Tên
- Branch:
- feature/feature-name
- bugfix/issue-description
- hotfix/urgent-fix
- release/v1.0.0
- Tags:
# Release tags v1.0.0 v1.0.1 # Pre-release tags v1.0.0-alpha.1 v1.0.0-beta.1
Semantic Versioning
- MAJOR.MINOR.PATCH (v1.0.0)
- Major: thay đổi breaking changes
- Minor: thêm tính năng mới (backward compatible)
- Patch: sửa lỗi
Xử Lý Tình Huống Thực Tế
Xử Lý Conflicts
git checkout main
git pull origin main
git checkout feature/branch
git rebase main
# Resolve conflicts
git push -f origin feature/branch
Bảo Vệ Branch
- Khóa push trực tiếp vào main
- Yêu cầu ít nhất 1-2 approvals cho mỗi PR
- Yêu cầu CI/CD pass
- Yêu cầu commit được signed
Clean Up Sau Release
# Xóa feature branch đã merge
git branch -d feature/new-feature
git push origin --delete feature/new-feature
# Cập nhật các branch khác
git checkout develop
git merge main
Tips Quan Trọng
- Pull Code Mới: Luôn pull code mới nhất trước khi tạo branch
- Commit Thường Xuyên: Mỗi commit một mục đích rõ ràng
- Rebase vs Merge: Ưu tiên rebase khi cập nhật feature branch
- Squash Commits: Gộp commits trước khi merge vào main
- Force Push: Không push --force vào main
- Backup: Backup tags và releases quan trọng
- Gitignore: Sử dụng .gitignore đầy đủ
Kết Luận
Quy trình Git là một phần quan trọng trong phát triển phần mềm. Việc tuân thủ các best practices và quy ước sẽ giúp team làm việc hiệu quả hơn và tránh được nhiều vấn đề phát sinh.
Tài Liệu Tham Khảo
- Git Documentation
- GitHub Guides
- GitLab Documentation