취미가 좋다

git cherry-pick(체리픽) 간단 설명 본문

개발 기타/git

git cherry-pick(체리픽) 간단 설명

benlee73 2023. 1. 29. 11:08

git cherry-pick

현재 브랜치에서 필요한 커밋들을 가져와서 뒤로 붙인다.

- 왼쪽 main 에서 c2, c4 커밋을 가져와서 붙이려고 한다.

- rebase 와 비슷한 방법으로 붙는다.

- 충돌이 날 수 있다.

 

 

 

 

 

 

 

 

git cherry-pick c2 c4

 

(main 에서 c4 를 체리픽 했을 때 충돌을 보면 c4 만의 변경 사항을 가져오는 것이 아니라 현재 브랜치와 c4 브랜치와 차이를 비교하는 것 같다.)

 

 

 

 

 

 

 


  • 그러나 실제로 테스트를 해봤을 때는 충돌이 발생한다.
  • 예를 들어 c2, c3, c4 가 아래와 같이 수정 변화를 가지고 있다고 하자.
  • (1) 충돌이 발생하는 경우 : c2, c3, c4 가 같은 곳을 수정했을 때
// c2
a

// c3
a
b

// c4
a
b
c
  • (2) 충돌이 발생하지 않는 경우 : c2, c3, c4 가 다른 곳을 수정했을 때
// c2
a
b
c

// c3
aaa
b
c

// c4
aaa
b
ccc

 

  • (1) 의 경우는 같은 부분을 수정했다. c4의 변경사항인 "c 문자 추가"를 체리픽으로 가져오지 못하고 충돌이 발생한다.
    • 같은 줄을 변경했다고 인식하는 것 같다. (충돌은 수정한 부분의 위치가 같으면 발생한다.)
    • c2 의 "아무것도 변경하지 않음"의 상태와 "b, c를 추가한 상태" 를 같은 줄을 변경했다고 해서 어느 쪽을 선택할 것인지에 대한 충돌로 보인다. 
  • (2) 의 경우는 "aaa" 변화와 "ccc" 변화가 따로 저장되는지 "ccc" 변화를 체리픽으로 가져올 수 있다.
  • 혹여나 문제가 발생하면 --abort 옵션(or --skip)으로 되돌리면 된다.
    • git cherry-pick --abort

 

 

https://learngitbranching.js.org/?locale=ko 

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

'개발 기타 > git' 카테고리의 다른 글

git 원격 저장소/브랜치  (0) 2023.02.04
git tag (태그) 간단 설명  (0) 2023.02.04
git 되돌리기(reset, revert) 간단 설명  (1) 2023.01.29
git HEAD 간단 설명  (0) 2023.01.24
git rebase 간단 설명  (0) 2023.01.24
Comments