저희가 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이 안깔린 분들은 해당링크를 통해 설치해주시면 될 것 같습니다.
현재 충돌난 부분은 이렇게 생겼고요.
내용을 고치고 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 |