오늘은 Git에서 사용하는 cherry pick에 대해 알아보도록 하겠다.
cherry-pick:
다른 branch에 있는 commit을 선택적으로 내 branch에 적용시킬 때, 사용하는 명령어
만약 다음과 같이 branch 두개가 있고 나의 branch가 X라고 가정하자.
나는 branch Y의 3개의 commit 목록(76ae30ef / 13af32cc / a0ee45lc) 중에 1개의 commit(13af32cc)만 내 branch로 가져오고자 한다.
그럴 경우, 우리는 아래와 같이 git 명령어를 사용할 수 있다.
git cherry-pick 13af32cc
만약, 복수개의 commit을 가져오고자 한다면 공백(스페이스바)를 통해 처리하면 된다.
git cherry-pick commit_hash1 commithash2
만약, 특정 commit hash1부터 commit hash3까지 가져오고자 한다면 아래와 같이 처리하면 된다.
git cherry-pick commit_hash1..commit_hash3
위와 같이 진행하면 commit_hash1부터 시작해서 commit_hash2, commit_hash3에 해당하는 커밋 데이터를 내 branch로 가져올 수 있다.
우리는 가끔 merge를 하는 경우, conflict 나는 경우가 있다.
그와 동일한 원리로 cerry-pick을 하는 경우에도 commit 내역 중 무언가가 문제가 되어 conflict 날 수 있다.
그럴 경우 우리는 두 가지 방법을 통해 해결할 수 있다.
- git add:
작업 디렉토리 상의 변경 내용을 staging 영역에 추가하는데 사용
(git commit을 하기 전, 변경분을 모아놓기 위해 사용)
git cherry-pick -abort
위 명령어를 통해 cherry-pick 중단 및 cherry-pick하기 전 상태로 리턴 후, 작업