cherry-pick 명령어는 commit을 하나의 branch로 합친다는 점에서 merge와 동작 방식이 유사하지만 다른 branch의 모든 commit 내용이 아닌 특정 commit만 적용한다는 점에서 차이가 있다. 구체적으로는 긴급 버그 픽스에 대한 commit만을 다른 branch들에 적용할 때 사용될 수 있다.
cherry-pick
협업 프로젝트를 진행하다보면 어떤 branch의 모든 commit 내용을 merge하지 않고 특정 commit 들만 선택적으로 main branch에 merge해야하는 일이 생길 수 있다. cherry-pick 명령어를 사용하면 현재 작업 공간 branch에 다른 branch의 commit 내용을 반영하여 새로운 commit을 생성한다.

예를 들어, 위 그림에서처럼 search branch에서의 모든 작업에 대한 commit이 아닌 사용자 검색 기능 구현에 대한 commit만을 main branch에 적용하고 싶을 때 "git cherry-pick <해당 commit 해시값(ID)>"을 사용하여 적용 가능하다.
// 특정 commit 내용을 현재 작업 공간 branch에 적용
git checkout <특정 commit을 적용하고자 하는 branch 이름>
git cherry-pick <다른 branch의 특정 commit에 대한 해시값(ID)>
// 여러 commit을 한번에 적용(공백으로 구분)
git cherry-pick <commit 1 ID> <commit 2 ID> <commit 3 ID>
Conflict
특정 commit에 대하여 cherry-pick 명령어를 수행할 때 merge와 마찬가지로 충돌(conflict)이 발생할 수 있다. conflict 발생 시 다음과 같이 해결할 수 있다.
- 충돌이 발생한 파일 수정
- 수정한 파일을 stage area에 등록 (git add <수정한 파일>)
- cherry-pick 명령어를 다시 계속해서 수행 (git cherry-pick --continue)
// 파일 수정 및 stage area 등록 후 계속해서 진행
git cherry-pick --continue
// cherry-pick 중단 및 되돌리기
git cherry-pick --abort
이미 cherry-pick 명령어가 수행된 상태에서 이전 상태로 되돌리기 위해서는 revert나 reset 명령어를 사용해야 한다.
'Git' 카테고리의 다른 글
| [Git] Commit 수정 및 복구 (revert & reset) (0) | 2024.11.04 |
|---|---|
| [Git] Merge Conflict specification (0) | 2024.11.03 |
| [Git] branch 병합 (merge & rebase) (0) | 2024.11.03 |
| [Git] branch 생성, 전환, 삭제 (branch, checkout & switch & restore) (0) | 2024.11.03 |
| [Git] Remote repository의 최신 정보 다운로드 (pull & fetch) (1) | 2024.11.03 |