본문 바로가기

Git

Git cherry-pick 충돌

저희가 Topic 2 버전을 cherry-pick 하기 위해서는 Topic 1 버전과 Topic 2 버전의 차이점을 찾아내야 합니다.

이 버전간의 차이점을 찾기 위해서는 3 way merge 방법을 쓰면 되는데요.

 

3 way merge를 이용하여 base를 Topic 2의 이전버전을 지정하면 t2라는 부분이 추가된 것을 알 수 있습니다.

이 두 버전의 어떤 변경점이 있었는지, Version 5가 만들어졌을때의 working copy를 비교해서

cherry-pick 한 결과인 Version 6을 만들 수 있는겁니다.

 

그렇다면 Version 6에서 무엇이 만들어질까요?

아마 첫줄은 Version 3( base ) 에는 변화가 없으므로 base 내용이 그대로 들어올 것 입니다.

다음 줄은 변화가 생긴 m1이 들어올 것이고, 마지막 줄은 t1,m2가 충돌이 생기겠죠?

마지막으로 Head는 main을 가리키고 현재 버전은 Version 6을 가르키게 될 것 입니다.

 

백각이 불여일행(百覺而 不如一行)이라고 직접 해보는게 낫겠죠?

우선 폴더를 만들어주고 초기화를 해주겠습니다.

git init

 

 

그리고 파일을 하나 만들겠습니다.

nano common.txt

 

git add common.txt; git commit -m "1"

 

현재 상태를 보시면

 

여기서 branch를 만들고, topic 브렌치에서는 3개 , main 브렌치에서는 2개의 버전을 만들겠습니다.

현재 상태를 보시면 요런 상태고요!

 

 

그리고 저희는 t3 버전을 cherry-pick 하여 m3와 병합해 m4를 만들껍니다.

 

 

cherry-pick을 하기 위해 checkout 으로 main 브렌치로 이동하겠습니다.

git checkout main

 

 

그리고 난후, cherry-pick 을 진행해주시면 되겠고요.

git cherry-pick [버전ID]

 

당연히 충돌이 발생하겠죠?

지금 충돌이 발생한 부분은 이곳이다 라고 추측해볼 수 있을겁니다.

 

그렇다면 수동으로 고쳐주기 위해선 에디터를 이용하고

tool로 고치겠다는 분은 mergetool 를 이용해주시면 될 것 같습니다.

저는 수동으로 고쳐보겠습니다.

 

mergetool이 안깔린 분들은 해당링크를 통해 설치해주시면 될 것 같습니다.

 

Download Helix Visual Merge Tool Today | Perforce

Helix Visual Merge Tool (P4Merge) is a three-way merging and side-by-side file comparison tool. Use it to visualize your merges, obtain comprehensive file history, and compare a broad range of image files. Download the tool to get started.

www.perforce.com

 

현재 충돌난 부분은 이렇게 생겼고요.

 

 

내용을 고치고 add를 해줍시다.

 

 

완료를 하였으면 나머지는 git에게 맡깁시다.

git cherry-pick --continue

 

로그를 확인해주시면 t3라는 이름으로 cherry-pick 한 버전이 새로 생성된 것을 확인할 수 있었습니다.

 

 

'Git' 카테고리의 다른 글

Git rebase  (0) 2024.01.31
Git cherry-pick  (0) 2024.01.31
Git cherry-pick & rebase  (0) 2024.01.31
Git CLI 협업3 (fetch)  (1) 2024.01.31
Git CLI 협업2  (0) 2024.01.31