프로젝트를 진행하다 보면 특정 브랜치의 특정 커밋만을 적용해야 할 때가 있습니다.
이때 유용하게 사용할 수 있는 기능이 바로 Cherry PIck
입니다.
cherry-pick
은 커밋 해쉬값을 적용해 주면 바로 반영이 됩니다.
사용하는 방법은 몇 가지가 있습니다.
git cherry-pick <commit_hash>
먼저, 하나씩 커밋을 적용하는 방법입니다.
git cherry-pick 1a2b3c4d
다음으로는 여러 개의 커밋을 적용하는 방법입니다.
git cherry-pick 1a2b3c4d 5e6f7g8h
그리고 ..
으로 범위를 지정하면 시작 커밋과 종료 커밋 사이의 모든 커밋을 반영할 수 있습니다.
git cherry-pick 1a2b3c4d..5e6f7g8h
또한 cherry-pick
에는 추가 옵션이 있습니다.
코드 충돌이 발생했을 때 이후 진행 여부를 결정하는 옵션입니다.
abort
는 cherry-pick
을 중단하는 옵션입니다.
abort
를 실행하면, cherry-pick
이전 상태로 돌아갑니다.
git cherry-pick-abort
코드 충돌을 해결하고 계속 cherry-pick
을 실행하려면 continue
옵션을 주면 됩니다.
그러면 cherry-pick
기능이 계속 진행됩니다.
git cherry-pick -continue
cherry-pick
이 완료되면 해당 소스를 푸시하면 됩니다.
IntelliJ
에서는 Push All up to Here
액션으로 간단하게 푸시가 가능합니다.
참고로 rebase
도 원하는 커밋을 선택적으로 반영할 수 있습니다.
하지만 rebase
는 현재 브랜치에서만 가능한 명령어입니다.
그리고 정석대로 소스를 관리하자면 merge
를 우선 고려하는게 좋습니다.
이후에 상황에 따라 rebase
나 cherry-pick
을 적절하게 활용합니다.