cherry-pick

git cherry-pick <commit_hash>

git cherry-pick이란 다른 브랜치에 있는 커밋을 선택적으로 내 브랜치(현재 브랜치)에 적용시킬 때 사용하는 명령어다.

git cherry-pick <commit_hash_1> <commit_hash_2>

명령어 뒤에 commit hash를 나열해 주면 여러 개를 한 번에 적용시킬 수 있다.

git cherry-pick <commit_hash_1>...<commit_hash_4>

<commit_hash_1>...<commit_hash_4> 처럼 명령을 하면, 1번~4번 사이의 커밋들을 cherry-pick 하게 된다. 이때, hash1이 시간상 가장 빠른 커밋이고, hash1은 cherry-pick에 포함되지 않는다.

이 외에 대표적인 옵션들은 다음이 있다.

  • git cherry-pick <commit>: 해당 커밋을 현재 브랜치에 적용합니다.
  • git cherry-pick -n <commit>: 해당 커밋을 적용하지만 커밋을 생성하지 않습니다. (드라이 런 모드)
  • git cherry-pick -x <commit>: 적용된 커밋에 원본 커밋의 정보를 추가합니다.

 

 

conflict가 발생하는 경우

cherry-pick 하려는 커밋과 현재 브랜치 사이에 conflict가 발생할 수 있다. 이때 사용가능한 옵션이 두 가지가 있다고 한다.

  1. conflict를 수정하고 cherry-pick 진행하기
  • 이 경우는 merge를 할 때처럼, conflict난 파일들을 수정한다.
  • git add 로 수정된 코드를 git에 올린다.
  • git cherry-pick -continue 명령어를 통해 다시 진행시킨다.
  1. cherry-pick 중단하기
  • git cherry-pick -abort 명령어를 사용해 중단시켜, cherry-pick 이전 상태로 돌아간다.

 

주의점

cherry-pick을 하는 경우 같은 내용을 갖고 있는 커밋이 여러 개 생기기 때문에, 나중에 누가 누굴 cherry-pick 했는지 모르는 상황이 생길 수 있다. 가능하다면 git rebase를 사용하는 방법이 좋다고 한다.

반응형

+ Recent posts