여러가지 커밋 중에 내가 원하는 커밋만 가져와서 현재 브랜치에 붙일 수 있습니다.
cherry-pick 하기 전
cherry-pick 한 후
예를 들면,
아무 생각 없이 main에 작업하고 커밋해버렸다.
다른 브런치에 작업하고 커밋하고 싶었는데, 급하게 커밋을 옮길 수 있나 찾아보니 쉽게 옮길 수 있었다.
커밋을 옮기고 싶은 브런치로 git checkout {branch}
커밋 해쉬 번호를 알아내기 위해 git log
를 입력
커밋을 옮길 브랜치로 이동
알아낸 해쉬 번호로 git cherry-pick {commit-id}
를 입력
→ 이러면 커밋이 현재 브랜치로 옮겨진다.
→ 여러개를 옮기려면 git cherry-pick {commit-id} {commit-id} …
잘못 올린 브랜치에서 git reset HEAD
로 커밋을 삭제
→ 단, origin에 push 하였다면 사용 X)
→ reset 대신 revert로 작업
다시 원하는 브랜치로 돌아와서 작업
<aside> 💡
Cherry-Pick은 서로 다른 두 브랜치의 코드를 합치는 명령어이다.
그러므로 역시나 코드 Conflict는 얼마든지 생길 수 있다.
이럴 때는 Hint에도 나와 있는 것 처럼 아래 3가지 명령어로 대처할 수 있다.
git cherry-pick --continue
: 충돌난 부분을 해결한 후, 실행하면 체리피킹이 마무리된다.git cherry-pick --skip
: 충돌난 커밋은 제외하고 체리피킹한다.git cherry-pick --abort
: Cherry-pick 실행하기 전으로 돌아간다.
</aside>