본문 바로가기
Programming

Git Cherry-pick (특정 커밋만 선택적으로 가져오기)

by 느리게 걷는 즐거움 2024. 12. 10.
반응형

Git Cherry-pick이란?

git cherry-pick은 특정 커밋 하나 또는 여러 개를 다른 브랜치로 가져오는 Git 명령어입니다. 이는 브랜치 간에 일부 기능이나 수정 사항만을 선택적으로 병합해야 할 때 유용합니다.
예를 들어, 새로운 기능을 개발하던 중 일부 수정 사항만 긴급하게 프로덕션(메인 브랜치)에 반영해야 하는 경우 git cherry-pick을 사용하면 됩니다.

Git Cherry-pick을 사용하는 이유

  1. 긴급 패치
    특정 버그를 수정한 커밋만 메인 브랜치에 반영하고 싶을 때 사용합니다.
  2. 부분 병합
    여러 작업 브랜치에서 특정 변경 사항만 가져오고 싶을 때 유용합니다.
  3. 정확한 컨트롤
    병합(merge)과 달리 충돌 가능성을 최소화하면서도 원하는 커밋만 선택적으로 가져올 수 있습니다.

 

Git Cherry-pick 사용 방법

 

1. 기본 사용법

다음 명령어를 통해 원하는 커밋을 다른 브랜치에 적용할 수 있습니다:

git cherry-pick <커밋 해시>

예시

  1. 먼저 적용할 커밋의 해시를 찾습니다.출력 예:
  2. f3a1b2c Fix typo in README e2d4a6f Add new feature X
  3. git log --oneline
  4. 원하는 커밋(f3a1b2c)을 현재 체크아웃된 브랜치로 가져옵니다.
  5. git cherry-pick f3a1b2c

 

2. 여러 커밋 한 번에 가져오기

여러 커밋을 연속으로 적용하려면 범위를 지정할 수 있습니다.

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

예시

e2d4a6f부터 f3a1b2c까지의 커밋을 가져오려면:

git cherry-pick e2d4a6f^..f3a1b2c

 

3. 충돌 해결

만약 cherry-pick 과정에서 충돌이 발생하면 Git이 충돌 내용을 표시합니다.

  1. 충돌 파일을 수정한 후:
    git add <파일명>
    
  2. 커밋을 완료합니다:
    git cherry-pick --continue
    
  3. 작업을 중단하려면:
    git cherry-pick --abort
    

 

4. 커밋 수정 없이 가져오기

기본적으로 cherry-pick은 기존 커밋의 메타데이터를 유지합니다. 하지만 -n 옵션을 사용하면 변경 내용만 가져오고 새로운 커밋으로 저장할 수 있습니다:

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

 

 

실제 시나리오

 

feature/login 브랜치에서 로그인 페이지를 수정한 커밋이 있습니다. 이 커밋만 main 브랜치에 반영해야 하는 경우 아래처럼 진행합니다.

  1. main 브랜치로 이동:
    git checkout main
    
  2. 커밋 가져오기:
    git cherry-pick <커밋 해시>
    
  3. 결과 확인:
    git log
    

 

 

반응형