-
[Git] 체리픽 (Cherry-pick)저장소/git 2022. 2. 5. 19:49
git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다.
rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다.
cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다.
커밋 체리픽
아래와 같이 있다고 가정할 때, feature/#1 브랜치의 커밋 중
34b4cab
와13f03ab
를 현재 master 브랜치에서 적용한다고 하면 다음과 같이 진행할 수 있습니다.# git cherry-pick {커밋 해시} git cherry-pick 34b4cab git cherry-pick 13f03ab # 또는 git cherry-pick 34b4cab 13f03ab # 또는 연속적인 커밋일 경우 git cherry-pick 34b4cab..fe834e9
여기서 연속적인 커밋이여서
git cherry-pick {시작 커밋 해시}..{종료 커밋 해시}
을 한다면 내가 적용하고자 하는 가장 마지막 해시의 다음 값을 지정해야 됩니다.머지 커밋 체리픽
만약 merge commit에 대해 cherry-pick을 원한다면 아래와 같이 진행하면 됩니다.
# git cherry-pick -m 1 {머지 커밋 해시}
체리픽 충돌 해결 방법
cherry-pick을 하고 충돌이 나는 경우도 있는데 아래와 같이 해결할 수 있습니다.
충돌 해결 후, cherry-pick을 계속 진행할 때
- 충돌난 코드를 수정
git add {충돌난 파일 경로}
로 충돌 해결한 코드를 추가git cherry-pick --continue
로 cherry-pick을 다시 진행
cherry-pick을 중단할 때
git cherry-pick --abort
로 cherry-pick을 중단하고 이전 상태로 돌아감