본문 바로가기
Tech Notes

Git Cherry-pick 이란?

by miracle-tech 2025. 9. 10.
728x90
반응형
  # 1. dev 에 commit & push (hash 정보를 가져옴 : 7183c68)

  # 2. main 브랜치로 전환
  git checkout main

  # 3. 최신 상태로 업데이트
  git pull origin main

  # 4. cherry-pick으로 특정 커밋만 적용
  git cherry-pick 7183c68
  
  # 4. cherry-pick을 여러개 적용
  git cherry-pick df29897 749dfc4
  
  # 4. cherry-pick을 범위로 지정
  git cherry-pick df29897..749dfc4

  # 5. main에 푸시
  git push origin main

다른 브랜치의 특정 커밋만 쏙 빼서 현재 브랜치에 적용하고 싶다면? Cherry-pick이 바로 그 해답입니다.

🍒 Cherry-pick이란?

체리를 하나씩 따듯이, 원하는 커밋만 골라서 현재 브랜치에 적용하는 Git 명령어입니다.

git cherry-pick <커밋해시>

언제 사용할까?

  • 핫픽스: 개발 브랜치의 버그 수정을 운영 브랜치에 즉시 적용
  • 선별 적용: feature 브랜치의 일부 기능만 먼저 적용
  • 실험 결과: 다른 브랜치의 유용한 변경사항만 가져오기

기본 사용법

단일 커밋

git cherry-pick abc1234

여러 커밋

# 연속된 커밋들 (시작 커밋 제외)
git cherry-pick start-commit..end-commit

# 시작 커밋 포함
git cherry-pick start-commit^..end-commit

# 개별 커밋들
git cherry-pick abc1234 def5678 ghi9012

실전 예제

# feature/login 브랜치의 보안 패치만 가져오기
git log --oneline feature/login
# a1b2c3d 보안 취약점 수정 ← 이것만 가져오고 싶음
# e4f5g6h 로그인 UI 개선
# i7j8k9l 소셜 로그인 추가

git cherry-pick a1b2c3d  # 보안 패치만 적용!

 

유용한 옵션들

# 커밋하지 않고 변경사항만 적용
git cherry-pick -n abc1234

# 커밋 메시지 수정
git cherry-pick -e abc1234

# 원본 커밋 정보 추가
git cherry-pick -x abc1234

충돌 해결

# 충돌 발생 시
git status                    # 충돌 파일 확인
# 파일 수정 후
git add .
git cherry-pick --continue   # 계속 진행

# 취소하고 싶다면
git cherry-pick --abort

⚠️ 주의사항

언제 조심해야 할까?

  • 같은 커밋을 중복으로 적용하지 않기
  • 의존성 있는 커밋들은 함께 가져오기
  • 과도한 사용은 히스토리를 복잡하게 만듦
  • 공유 브랜치에서는 팀과 충분히 소통하기

되돌리기

# 마지막 cherry-pick 취소
git reset --hard HEAD~1

# 특정 커밋 되돌리기
git revert <커밋해시>

마무리

Cherry-pick은 선택적 적용이 필요할 때 매우 유용한 도구입니다. 하지만 남용하면 프로젝트 히스토리가 복잡해지니, 명확한 목적이 있을 때만 사용하세요!

핵심 포인트:

  • 특정 커밋만 골라서 적용하는 명령어
  • 핫픽스나 선별 적용에 유용
  • 충돌 시 해결 후 --continue로 진행
  • 과도한 사용은 금물!
728x90