어제 오늘 내일

[Git] 알짜배기 커밋만 쏙! 골라오는 Cherry-pick 완벽 가이드 본문

IT/Git

[Git] 알짜배기 커밋만 쏙! 골라오는 Cherry-pick 완벽 가이드

hi.anna 2026. 3. 8. 01:05

협업을 하다 보면 "다른 브랜치에 있는 저 기능 딱 하나만 가져오고 싶은데..." 라는 생각이 들 때가 있습니다. 브랜치 전체를 병합(Merge)하기엔 아직 미완성된 코드가 많아 부담스러울 때가 있죠.

이럴 때 사용하는 기능이 바로 Git Cherry-pick입니다. 말 그대로 체리 바구니에서 맛있는 체리(커밋)만 쏙 골라내는 것처럼, 특정 커밋만 내 브랜치로 가져오는 기술입니다.

이번 포스팅에서는 cherry-pick의 개념과 실전 사용법, 그리고 충돌 해결 꿀팁까지 정리해 드리겠습니다.

 


 

보통 브랜치를 합칠 때는 merge를 사용합니다. 하지만 merge는 브랜치의 모든 역사를 가져오기 때문에, 특정 버그 수정 사항만 긴급하게 배포 브랜치로 가져와야 할 때는 부적절할 수 있습니다.

이때 cherry-pick을 사용하면 원하는 커밋 하나만 복사해서 현재 브랜치에 붙여넣을 수 있습니다.

 


 

1. 기본 사용법: 커밋 하나만 가져오기

가장 기본적인 사용법입니다. 가져오고 싶은 커밋의 해시(ID)만 알면 끝입니다.

Step 1: 가져올 커밋의 ID 확인하기

먼저, 원하는 커밋이 있는 브랜치에서 git log를 통해 커밋 해시(예: a1b2c3d)를 복사합니다.

Step 2: 내 브랜치로 이동하기

커밋을 가져올(붙여넣을) 브랜치로 이동합니다.

$ git checkout main
# 또는
$ git switch main

Step 3: 체리픽 실행하기

명령어 뒤에 복사해둔 커밋 해시를 붙여넣습니다.

$ git cherry-pick a1b2c3d
  • 결과: 해당 커밋의 변경 내용이 내 브랜치에 새로운 커밋으로 추가됩니다. (내용은 같지만, 커밋 해시는 새로 생성됩니다!)

 


 

2. 고급 사용법: 여러 개 한꺼번에 가져오기

커밋 하나가 아니라, 연속된 작업물 여러 개를 가져와야 할 때도 있겠죠?

① 띄어쓰기로 나열하기

가져올 커밋이 2~3개 정도로 적다면, 해시를 나열하면 됩니다.

$ git cherry-pick a1b2c3d e4f5g6h 7i8j9k0

② 범위(Range) 지정하기 (..)

연속된 커밋 구간을 통째로 가져올 때 유용합니다.

# A 다음부터 ~ B까지 가져옵니다.
$ git cherry-pick <시작커밋ID>..<끝커밋ID>

⚠️ 주의: 시작 커밋(A)은 포함되지 않고, 그 다음 커밋부터 끝 커밋(B)까지 가져옵니다. A까지 포함하고 싶다면 A의 바로 전 커밋 ID를 입력해야 합니다.


 

3. 충돌(Conflict)이 났을 때 대처법

cherry-pick은 서로 다른 브랜치의 코드를 강제로 가져오는 것이기 때문에 충돌(Conflict)이 매우 자주 발생합니다. 당황하지 말고 침착하게 해결해 보세요.

상황: 체리픽 중에 충돌 발생!

터미널에 CONFLICT 메시지가 뜨면서 체리픽이 중단됩니다.

해결 1: 충돌 수정하고 계속 진행하기 (--continue)

  1. 충돌이 난 파일(코드)을 직접 수정합니다.
  2. 수정한 파일을 스테이징합니다: git add <파일명>
  3. 체리픽을 계속 진행합니다: (이 때는git commit을 따로 할 필요가 없습니다.)
    $ git cherry-pick --continue

해결 2: "안 할래!" 중단하기 (--abort)

충돌이 너무 복잡해서 포기하고 싶다면, 체리픽 하기 전 상태로 되돌립니다.

$ git cherry-pick --abort

 

 


 

💡 언제 쓰면 좋을까요? (실전 시나리오)

  1. 긴급 버그 수정 (Hotfix): 개발 브랜치(dev)에서 버그를 고쳤는데, 이 수정 사항만 당장 운영 브랜치(main)에 반영해야 할 때.
  2. 실수로 엉뚱한 브랜치에 커밋했을 때: feature/A에 해야 할 커밋을 feature/B에 했을 때, feature/A로 이동해서 그 커밋만 체리픽으로 가져오고 원래 브랜치에서는 삭제합니다.

 


 

마치며

cherry-pick은 강력하지만, 남용하면 같은 내용의 커밋이 여러 브랜치에 다른 ID로 존재하게 되어 나중에 전체 병합(Merge) 시 혼란을 줄 수 있습니다. 꼭 필요할 때만 '알짜배기'로 사용하시길 권장합니다!

 

반응형
Comments