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:
bash
git checkout release/2.1
git cherry-pick abc123 # apply hotfix commit từ main
git checkout release/2.0
git cherry-pick abc1232. Lấy 1 commit cụ thể từ colleague's branch mà bạn cần ngay:
bash
git cherry-pick def456 # chỉ cần 1 commit, không cần cả branch3. Recover commit từ deleted branch:
bash
git cherry-pick abc123 # commit vẫn tồn tại dù branch bị xóaKhi 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
Lưu ý:
bash
git cherry-pick abc123..def456 # range of commits
git cherry-pick -n abc123 # apply changes nhưng không commit (staging chỉ)Conflict cherry-pick: resolve, git add, git cherry-pick --continue.