Skip to main content

cherry-pick


1. Git Cherry-pick이란?

git cherry-pick은 다른 브랜치의 특정 커밋 하나만 골라 현재 브랜치에 적용하는 명령어이다.

"딱 필요한 커밋 하나만 따로 복사해오고 싶을 때" 사용한다.


2. 기본 문법


git cherry-pick <커밋 해시>

예:


git cherry-pick a1b2c3d

3. 시각화 예시

🎯 목적: feature 브랜치의 특정 커밋 C3main 브랜치로 가져오기


📌 기존 상태

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. 사용 예시 요약

상황

설명

🔧 버그 수정

main에서 수정한 버그 커밋을 release 브랜치에도 적용

🎯 기능 분리

여러 기능 중 하나만 따로 적용

🧪 실험

실험용 브랜치에 특정 수정만 적용해서 테스트


7. cherry-pick vs merge vs rebase

명령어

적용 범위

히스토리 영향

특징

merge

전체 브랜치

O (병합 커밋 생성)

원본 히스토리 유지

rebase

전체 브랜치

O (히스토리 수정)

깔끔한 직선형 히스토리

cherry-pick

개별 커밋

O (복제 커밋 생성)

선택 적용 가능


8. 주의사항

  • 커밋 해시는 같아 보여도 내부적으로 새 커밋(C3′) 이 생성됨
  • 여러 번 cherry-pick 시 중복 충돌이 발생할 수 있음
  • 동일 커밋을 여러 브랜치에서 사용 시 히스토리 혼동 가능성 있음