취미가 좋다
git cherry-pick(체리픽) 간단 설명 본문
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
'개발 기타 > 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