“다른 브랜치에 있는 커밋을 그대로 복사해서 가져오기”
순서
1️⃣ 먼저 옮기고 싶은 브랜치로 이동
git checkout {target-branch}
2️⃣ 다른 브랜치의 커밋 해시 확인
3️⃣ 커밋 복사
git cherry-pick abc1234
- 커밋 내용 + 메시지 그대로 복사됨
여러 커밋 한 번에 옮기기
git cherry-pick abc1234 def5678 ghi9012
또는 연속된 커밋이면:
git cherry-pick abc1234..def5678
- ⚠️ abc1234는 포함 안 되고, 그다음부터
충돌이 났을 때
# 충돌 해결 후
git add .
git cherry-pick --continue
취소하고 싶을 때
git cherry-pick --abort
실제 예시
dev-v3.5에 있는 커밋을 dev에 옮기고 싶은 상황
git checkout dev
git cherry-pick f7a10860 837c2a0d
dev로 브랜치를 옮겨가서 실행해야 하는데, dev-v3.5에서 cherry-pick을 했다면?
다음과 같이 안내를 해주니 취소(abort)하고 브랜치를 옮겨가서 다시 수행하면 됨!
On branch dev-v3.5
Cherry-pick currently in progress.
nothing to commit, working tree clean
The previous cherry-pick is now empty
- 지금 브랜치가 dev-v3.5
- cherry-pick이 진행 중 상태
- cherry-pick 하려던 커밋이 이미 dev-v3.5에 존재
궁금했던 점
v3.5에는 내용이 남아있는 걸까?
✅ cherry-pick은 “이동”이 아니라 “복사”이기 때문에
- dev3.5 브랜치 내용은 전혀 변하지 않음
- 커밋도 그대로 있음
- 히스토리도 안 바뀜
커밋 내용은 동일하지만 해시만 바뀜(=새 커밋)
한 줄 요약
cherry-pick은 “받는 브랜치”에서 한다
- dev-v3.5 → dev 👉 dev에서 실행
