Trung BìnhGit iconGit

`git cherry-pick` trong thực tế: khi nào là công cụ đúng và khi nào là dấu hiệu branching strategy có vấn đề?

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 abc123

2. 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ả branch

3. Recover commit từ deleted branch:

bash
git cherry-pick abc123  # commit vẫn tồn tại 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

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.

Xem toàn bộ Git cùng filter theo level & chủ đề con.

Mở danh sách Git