# cherry-pick --- ## 1. Git Cherry-pick이란? `git cherry-pick`은 다른 브랜치의 ****특정 커밋 하나만 골라**** 현재 브랜치에 적용하는 명령어이다. > "딱 필요한 커밋 하나만 따로 복사해오고 싶을 때" 사용한다. --- ## 2. 기본 문법 ```bash git cherry-pick <커밋 해시> ``` 예: ```bash git cherry-pick a1b2c3d ``` --- ## 3. 시각화 예시 ### 🎯 목적: `feature` 브랜치의 특정 커밋 `C3``main` 브랜치로 가져오기 ``` 📌 기존 상태 main: A---B \ feature: C1---C2---C3---C4 ``` ```bash git checkout main git cherry-pick C3 ``` ``` 📌 결과 상태 main: A---B---C3' \ feature: C1---C2---C3---C4 ``` > 🔄 `C3'``C3`와 동일한 내용이지만 ****다른 커밋 해시****를 가진 복제 커밋한다. --- ## 4. 여러 커밋 cherry-pick ```bash git cherry-pick <시작해시>^..<끝해시> ``` 예: ```bash git cherry-pick C2^..C4 ``` → C2, C3, C4를 현재 브랜치로 모두 적용 --- ## 5. 충돌 발생 시 - 충돌 발생 시 수동 해결 필요 ```bash git add . git cherry-pick --continue ``` - 중단하고 원래대로 되돌릴 때: ```bash 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 시 ****중복 충돌****이 발생할 수 있음 - 동일 커밋을 여러 브랜치에서 사용 시 히스토리 혼동 가능성 있음 ---