cherry-pick
1. Git Cherry-pick이란?
git cherry-pick
은 다른 브랜치의 특정 커밋 하나만 골라 현재 브랜치에 적용하는 명령어이다.
"딱 필요한 커밋 하나만 따로 복사해오고 싶을 때" 사용한다.
2. 기본 문법
git cherry-pick <커밋 해시>
예:
git cherry-pick a1b2c3d
3. 시각화 예시
🎯 목적: feature
브랜치의 특정 커밋 C3
만 main
브랜치로 가져오기
📌 기존 상태
main: A---B
\
feature: C1---C2---C3---C4
git checkout main
git cherry-pick C3
📌 결과 상태
main: A---B---C3'
\
feature: C1---C2---C3---C4
🔄
C3'
는C3
와 동일한 내용이지만 다른 커밋 해시를 가진 복제 커밋한다.
4. 여러 커밋 cherry-pick
git cherry-pick <시작해시>^..<끝해시>
예:
git cherry-pick C2^..C4
→ C2, C3, C4를 현재 브랜치로 모두 적용
5. 충돌 발생 시
- 충돌 발생 시 수동 해결 필요
git add .
git cherry-pick --continue
- 중단하고 원래대로 되돌릴 때:
git cherry-pick --abort
6. 사용 예시 요약
상황 | 설명 |
---|---|
🔧 버그 수정 |
|
🎯 기능 분리 | 여러 기능 중 하나만 따로 적용 |
🧪 실험 | 실험용 브랜치에 특정 수정만 적용해서 테스트 |
7. cherry-pick vs merge vs rebase
명령어 | 적용 범위 | 히스토리 영향 | 특징 |
---|---|---|---|
| 전체 브랜치 | O (병합 커밋 생성) | 원본 히스토리 유지 |
| 전체 브랜치 | O (히스토리 수정) | 깔끔한 직선형 히스토리 |
| 개별 커밋 | O (복제 커밋 생성) | 선택 적용 가능 |
8. 주의사항
- 커밋 해시는 같아 보여도 내부적으로 새 커밋(C3′) 이 생성됨
- 여러 번 cherry-pick 시 중복 충돌이 발생할 수 있음
- 동일 커밋을 여러 브랜치에서 사용 시 히스토리 혼동 가능성 있음