cherry pick이란, 체리 한 바구니에서 제일 좋은 체리만 고르는 것에서 유래한 표현이라고 한다.
일반적으로는 제일 좋은 걸 선별한다는 뜻으로 쓰인다.
git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중 일부를 가져와야 하는 경우가 종종 생긴다.
git cherry-pick 명령어는 특정한 commit 하나만 콕 찝어서 현재 HEAD가 가리키는 branch에 추가할 수 있게 해준다.
쉽게 말해서 다른 branch에 있는 여러개의 commit들 중, 원하는 commit을 지금 내 branch에 가져와서 commit 할 수 있는 것이다.
참고로 commit을 branch에서 다른 branch로 옮기는 건 아니고,
전체 history를 따지면 cherry-pick한 새로운 commit이 늘어나는 것이다.
git cherry-pick
$ git cherry-pick <commit번호>
예를들어, 위 처럼 현재 코드는 X 브랜치에 있고
브랜치 Y의 커밋 중 76ae30ef와 13af32cc만 골라 현재 브랜치인 X에 적용하고 싶다고 가정하자.
# 하나씩 해도 되고
$ git cherry-pick 76ae30ef
$ git cherry-pick 13af332cc
# 인라인으로 한꺼번에 해도 된다.
$ git cherry-pick 76ae30ef 13af32cc
Cherry-pick을 하여 브랜치 X에 적용하면, 이전 커밋 수정사항이 X브랜치에 적용된다.
물론 겹치는 내용이 있으면 당연히 conflict가 일어나고, 수정 후 새로 커밋해야 한다.
git cherry-pick -continue/ -abort
가끔 cherry-pick하려는 커밋과 내 브랜치 사이에 conflict이 발생할 수 있다.
그런 경우 두 가지 옵션이 있다.
- Conflict를 해결하고 cherry-pick을 진행시킨다.
- Conflict을 해결하기 위해 코드를 수정한다.
- git add <path> 명령어로 수정된 코드를 올린다. (커밋은 다시 할 필요 없다.)
- git cherry-pick –continue 명령어를 사용하면 다시 진행이 시작 된다.
- cherry-pick을 중단한다.
- git cherry-pick –abort 명령어를 사용해 cherry-pick을 중단하면, cherry-pick을 하기 전 상태로 돌아갈 수 있다.
'개발도구 > Git' 카테고리의 다른 글
git filter-branch (0) | 2022.10.23 |
---|---|
git remote branch 가져오기 (0) | 2022.07.31 |
git remote add (원격저장소 추가) (0) | 2022.07.31 |
git branch -d (브랜치 삭제하기) (0) | 2022.07.03 |
강제 (force) push 수행하기 (0) | 2022.07.03 |
댓글