여러가지 커밋 중에 내가 원하는 커밋만 가져와서 현재 브랜치에 붙일 수 있습니다.

cherry-pick 하기 전

cherry-pick 하기 전

cherry-pick 한 후

cherry-pick 한 후

예를 들면,

작업 예시

문제

아무 생각 없이 main에 작업하고 커밋해버렸다.

다른 브런치에 작업하고 커밋하고 싶었는데, 급하게 커밋을 옮길 수 있나 찾아보니 쉽게 옮길 수 있었다.

작업 순서

  1. 커밋을 옮기고 싶은 브런치로 git checkout {branch}

  2. 커밋 해쉬 번호를 알아내기 위해 git log를 입력

  3. 커밋을 옮길 브랜치로 이동

  4. 알아낸 해쉬 번호로 git cherry-pick {commit-id}를 입력

    → 이러면 커밋이 현재 브랜치로 옮겨진다.

    → 여러개를 옮기려면 git cherry-pick {commit-id} {commit-id} …

  5. 잘못 올린 브랜치에서 git reset HEAD로 커밋을 삭제

    → 단, origin에 push 하였다면 사용 X)

    → reset 대신 revert로 작업

  6. 다시 원하는 브랜치로 돌아와서 작업

<aside> 💡

Cherry-Pick은 서로 다른 두 브랜치의 코드를 합치는 명령어이다.

그러므로 역시나 코드 Conflict는 얼마든지 생길 수 있다.

image.png

이럴 때는 Hint에도 나와 있는 것 처럼 아래 3가지 명령어로 대처할 수 있다.