본문 바로가기
Tools/Git

[Git] Cherry-pick 정리 - 필요한 커밋만 쏙쏙 골라 담기

by 홍월이_ 2025. 4. 17.

Git으로 협업하다 보면, 전체 브랜치를 병합하는 대신 특정 커밋 하나만 다른 브랜치에 옮기고 싶을 때가 있습니다.

이럴 때 사용하는 강력한 도구가 바로 git cherry-pick입니다.

이번 포스팅에서는 cherry-pick의 개념부터 실전 사용법, 주의할 점까지 자세히 알아봅니다.


📌 목차

  1. git cherry-pick이란?
  2. cherry-pick 사용법
  3. 실제 사례로 보는 cherry-pick
  4. 시각적 흐름 예시
  5. 충돌(Conflict) 처리 방법
  6. 유용한 옵션들
  7. 주의사항 및 실전 팁
  8. 마무리

1. git cherry-pick이란?

git cherry-pick은 특정 커밋 하나(또는 여러 개)를 선택해서 현재 브랜치 위에 복사해 적용하는 명령어입니다.

마치 과일 바구니에서 필요한 체리만 "쏙쏙" 골라 담는다는 의미에서 이름이 붙었어요!

브랜치 병합 없이 커밋 하나만 선택적으로 적용할 수 있다는 게 가장 큰 특징입니다.


2. cherry-pick 사용법

기본 문법

git cherry-pick <커밋 해시>

여러 커밋:

git cherry-pick <커밋1 해시> <커밋2 해시> ...

범위로 지정:

git cherry-pick <시작 커밋 해시>^..<끝 커밋 해시>

주의: ^ 기호는 시작 커밋 전 커밋부터 포함시킨다는 의미


3. 실제 사례로 보는 cherry-pick

예제 상황

main:    A---B---C
                 \\
feature:          D---E---F

이때 E만 main 브랜치에 적용하고 싶다면?

git checkout main
git cherry-pick <E의 커밋 해시>

결과:

main:    A---B---C---E'
  • E'는 E 커밋과 같은 변경 내용을 가진 새로운 커밋
  • 기존 히스토리는 유지되고, feature 브랜치는 영향을 받지 않음

4. 시각적 흐름 예시

Before:
main:    A---B---C
feature:         \\---D---E---F

After cherry-pick E:
main:    A---B---C---E'
  • E'는 E의 복사본 (새 커밋)
  • merge처럼 전체 병합이 아니라 단일 커밋만 가져옴

5. 충돌(Conflict) 발생 시

체리픽도 결국 다른 브랜치의 변경 사항을 적용하는 것이기 때문에 충돌이 발생할 수 있어요.

충돌 발생 시 처리

# 충돌 해결 후
git add <수정한 파일>
git cherry-pick --continue

중단하려면:

git cherry-pick --abort

6. 유용한 옵션들

옵션 설명

-x 커밋 메시지에 "cherry picked from commit xxx" 문구 추가
--edit 커밋 메시지를 수정할 수 있도록 열어줌
--no-commit 커밋하지 않고 변경사항만 staging 영역에 적용
--continue 충돌 해결 후 cherry-pick 계속 진행
--abort cherry-pick 작업 취소

예시:

git cherry-pick -x <커밋 해시>

7. 주의사항 및 실전 팁

✅ 언제 쓰면 좋을까?

  • 다른 브랜치에서 수정한 버그 픽스만 가져오고 싶을 때
  • 기능 브랜치에서 실수로 잘못된 브랜치에 커밋했을 때 복사하고 싶을 때
  • 긴급한 수정 사항만 메인 브랜치에 바로 반영할 때

⚠️ 주의점

  • 히스토리가 재작성되므로 커밋 해시가 달라집니다.
  • 동일한 커밋을 여러 번 cherry-pick하면 충돌 또는 중복 커밋 가능성 있음
  • 공동 작업 중이라면 팀원과 합의 후 사용

8. 마무리

git cherry-pick은 브랜치를 병합하지 않고 커밋만 뽑아 쓸 수 있는 매우 유용한 명령어입니다.

특히 긴급한 상황, 빠른 수정 적용이 필요할 때 매우 강력하게 쓰일 수 있어요.

단, 히스토리 재작성이므로 신중하게, 그리고 팀의 커밋 흐름 전략에 맞게 사용하세요!

 

 

...끝!

댓글