고기 대신 SW 한점/GIT

[Git]cherry-pick : 끝장내기

지식한점 2022. 10. 6. 14:18
반응형

git cherry-pick은 브랜치 A에 있는 커밋을 선택하여 브랜치 B에 적용시킬 때 사용하는 명령어입니다.

rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다.

다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야하는 제약사항이 있습니다.

cherry-pick은 같은 내용을 가지고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다.

커밋 체리픽

아래와 같이 있다고 가정할 때, develop 브랜치의 커밋 중 B,D,E 를 현재 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

만약 merge commit에 대해 cherry-pick을 원한다면 아래와 같이 진행하면 됩니다.

# git cherry-pick -m 1 {머지 커밋 해시}

Cherry-Pick conflict 해결 방법

cherry-pick을 하고 충돌이 나는 경우 Merge Tool을 이용하여  아래와 같이 해결할 수 있습니다.

 

git config --global merge.tool meld
  1. 충돌난 코드를 수정
  2. git add {충돌난 파일 경로} 로 충돌 해결한 코드를 추가
  3. git cherry-pick --continue 로 cherry-pick을 다시 진행
git cherry-pick ....
git mergetool
git cherry-pick --continue

cherry-pick을 중단할 때

  1. git cherry-pick --abort 로 cherry-pick을 중단하고 이전 상태로 돌아감
 
반응형

'고기 대신 SW 한점 > GIT' 카테고리의 다른 글

[git] Branch 브랜치 끝장내기 2  (0) 2022.10.20
[git] Branch 브랜치 끝장내기 1  (0) 2022.10.20
[Git]Conflict(충돌) 해결하기  (0) 2022.10.07
[Git] 개념잡기 1 (시작하기)  (1) 2022.10.07
SW version 관리  (0) 2022.09.28