git cherry-pick <commit> copy 1 commit từ branch khác vào branch hiện tại — tạo commit mới với cùng changes nhưng hash khác.
Khi cherry-pick là đúng:
1. Hotfix cần apply vào nhiều release branches:
git checkout release/2.1 && git cherry-pick abc123 # hotfix commit từ main
git checkout release/2.0 && git cherry-pick abc1232. Lấy 1 commit cụ thể từ branch của đồng nghiệp mà bạn cần ngay — không cần merge cả branch.
3. Recover commit từ deleted branch — commit vẫn tồn tại trong object store dù branch bị xóa.
Khi cherry-pick là dấu hiệu vấn đề:
- Cherry-pick từ develop vào feature hàng ngày → nên rebase thay thế
- "Chúng ta cherry-pick hotfix vào 5 branches" → cần reconsider branching strategy, quá nhiều long-lived branches
- Cherry-pick để share code giữa features → nên extract thành shared module
Flags hữu ích: git cherry-pick abc123..def456 (range — KHÔNG gồm abc123, dùng abc123^..def456 nếu muốn gồm), -n apply changes nhưng không commit. Conflict: resolve → git add → git cherry-pick --continue.