DDevArchive
Đăng nhập

Git workflow thực tế: feature branch, PR và làm việc nhóm

Ở bước Foundation bạn biết git add, commit, push. Đi làm thật, không ai commit thẳng vào main. Bạn tạo branch riêng cho mỗi feature, tạo Pull Request để team review, rồi mới merge. Đây là quy trình 100% công ty dùng.

Git Flow đơn giản cho team nhỏ

Nguyên tắc: main luôn sạch, luôn deploy được. Mọi thay đổi phải qua branch riêng → Pull Request → review → merge. Không ai commit trực tiếp vào main.

// File: workflow.sh
# 1. Lấy code mới nhất từ main
git checkout main
git pull origin main

# 2. Tạo branch cho feature mới
git checkout -b feature/add-search-bar

# 3. Code, commit nhiều lần
git add .
git commit -m "feat: add search input UI"
git commit -m "feat: add search API integration"
git commit -m "test: add search tests"

# 4. Push branch lên GitHub
git push origin feature/add-search-bar

# 5. Tạo Pull Request trên GitHub
# → Team review → approve → merge vào main

# 6. Sau khi merge, xoá branch cũ
git checkout main
git pull origin main
git branch -d feature/add-search-bar

Commit message chuẩn (Conventional Commits)

PrefixÝ nghĩaVí dụ
feat:Tính năng mớifeat: add user search
fix:Sửa bugfix: login fails on mobile
docs:Cập nhật tài liệudocs: update README setup
style:Format code (không đổi logic)style: fix indentation
refactor:Tái cấu trúc (không đổi hành vi)refactor: extract auth utils
test:Thêm/sửa testtest: add login integration test
chore:Việc vặt (config, dependencies)chore: update eslint config

Pull Request: quy trình review

PR không chỉ là “xin merge”. PR là nơi team trao đổi, học hỏi, và bảo vệ chất lượng code. PR tốt có: tiêu đề rõ ràng, mô tả vì sao thay đổi, screenshot nếu có UI, và test pass.

// File: pr-template.md
## PR Template mẫu

### Mô tả
Thêm tính năng tìm kiếm user theo tên và email.

### Loại thay đổi
- [x] Feature mới
- [ ] Bug fix
- [ ] Refactor

### Checklist
- [x] Test pass
- [x] Code đã được format
- [x] Không có console.log thừa
- [x] Đã tự review code một lần

### Screenshots (nếu có UI)
| Trước | Sau |
|-------|-----|
| (ảnh) | (ảnh) |

Xử lý conflict khi merge

// File: conflict.sh
# Khi branch của bạn conflict với main
# Cách 1: Rebase (lịch sử sạch hơn)
git checkout feature/add-search-bar
git rebase main
# → Sửa conflict → git add → git rebase --continue

# Cách 2: Merge (an toàn hơn)
git checkout feature/add-search-bar
git merge main
# → Sửa conflict → git add → git commit

# Tip: dùng VS Code để sửa conflict — có UI rất trực quan
# Accept Current | Accept Incoming | Accept Both
💡 Branch nhỏ = merge dễ

Branch nên sống ngắn (1-3 ngày). Branch sống lâu → conflict nhiều → merge khó. Chia task nhỏ, commit thường xuyên, merge sớm.

❓ Vì sao không nên commit trực tiếp vào main?

  • Tạo feature branch và push lên GitHub
  • Viết commit message theo Conventional Commits
  • Tạo Pull Request với mô tả rõ ràng
  • Xử lý merge conflict bằng VS Code