[cherry-pick]
특정 커밋들의 복제본을 추가한다.
git merge가 특정 커밋을 지정하더라도
공통 조상 이후부터 해당 커밋까지 전체의 흐름을 복제하여 병합 커밋을 생성한다면,
git cherry-pick은 특정 커밋들만을 복제하여 병합 커밋을 생성할 수 있다.
> git cherry-pick 복제할_커밋들...
공백을 사이에 두고 여러 커밋ID를 선택할 수도 있고,
> git cherry-pick 옛날_커밋ID..최근_커밋ID
공백 없이 ID..ID로, 연속 구간을 선택할 수 있다.
시간상 왼쪽이 예전 것, 오른쪽이 최근 것을 적는다.
(,] 형태로, 옛날_커밋ID는 포함하지 않지만, 최근_커밋ID는 포함한다.
(옛날_커밋ID^..최근_커밋ID를 쓰면 한 칸 이전을 뜻하므로, 옛날_커밋ID도 포함되게 할 수 있다)
당연히 cherry-pick도 충돌(conflict)이 발생할 수 있다.
git add등으로 수정 후, git cherry-pick --continue로 완료시킨다.
조율될 수도 있고, 양자택일에 따라 기존 작업 내용을 버리거나, 가져올 내용이 없어져 커밋을 생성하지 않기도 한다.
merge 커밋을 복제해 오려면 추가적인 옵션이 필요하다.
> git log
commit 7651d26b91fac3fa0a13cbaca5fd2d249585f91a (HEAD -> a01, origin/a01)
Merge: 54cd13d aa4b9a1<---- 순서 확인
Author: USER <email@address.com>
Date: EEE MMM dd HH:mm:ss yyyy +0900
Merge remote-tracking branch 'refs/remotes/origin/a01' into a01
...
log를 통해 Merge: 부분의 순서를 확인한다.
> git cherry-pick -m 순서(1부터) 복제할_병합커밋
특정 순서에서 진행된 것처럼 작업 내용을 복제한다.
(해당 순서를 제외한 나머지 순서의 작업 내용들을 적용한다)