Post

Upgrade Blog Core to v7.1.1 (feat. Jekyll)

병합 충돌 바로 잡기

오랜 시간 기본 브랜치와 멀어진 구석기 브랜치 병합에 관하여

깃블로그를 운영하면서 오랜 시간 upstream 코어를 업데이트 하지 않았다.

병합하고자 Pull Request 를 열었으나 무수히 많은 파일들이 변경되었고 또한 충돌을 바로 잡아야 하는 많은 파일들이 있었다.

이를 해결하기 위하여 각 잡고 시간을 내어 충돌하는 부분을 하나씩 확인하고 올바르게 병합을 잡아주었다.

근래에 병합을 시도하려고 했으나 많은 충돌로 미루고 미루다 이번 기회에 시도하게 되었다.

Upstream 으로 부터 v7.1.1 병합 준비

기존 기반은 ‘v6.0.0’ 을 기반으로 깃블로그를 운영하였으나 최근에 릴리즈된 ‘v7.1.1’ 을 따라가고자 Pull Request 를 열어 로컬에서 충돌을 확인하였다.

단계별 확인하자면 아래와 같다.

gitGraph:
    commit "test"
    commit
    commit tag:"v6.0.0"
    commit
    branch downstream
    checkout downstream
    commit
    commit
    commit
    checkout main
    commit type: HIGHLIGHT
    commit
    commit type: HIGHLIGHT
    commit type: HIGHLIGHT
    commit
    commit tag:"v7.1.1"
    commit

위와 같이 upstream 과 downstream 이 따로 놀면서 여러 블로그 글에 관한 포스팅 커밋을 쌓아가서 병합하면 충돌이 나는 상태가 된다.

gitGraph:
    commit "test"
    commit
    commit tag:"v6.0.0"
    commit
    branch downstream
    checkout downstream
    commit id: "4cd65a7"
    commit id: "6b78c96"
    commit id: "cb7a98b"
    checkout main
    commit type: HIGHLIGHT
    commit
    commit type: HIGHLIGHT
    commit type: HIGHLIGHT
    commit
    commit tag:"v7.1.1"

    merge downstream
    commit
    branch develop
    checkout develop
    commit
    commit

어떠한 방향으로 병합을 하든 충돌을 피할 수 없어 먼저 위와 같이 downstream 브랜치를 upstream 브랜치에 병합을 해주고 merge 된 최종 commit 울 기반으로 새로 브랜치를 파면 되는데 이때 무수한 충돌을 해결하는 것이 필요하다. 이때 나는 rebase 를 진행해주어 각 커밋마다 충돌을 해결하였다.

gitGraph:
    commit "test"
    commit
    commit tag:"v6.0.0"
    commit id: "4cd65a7"
    commit id: "6b78c96"
    commit id: "cb7a98b"
    commit type: HIGHLIGHT
    commit
    commit type: HIGHLIGHT
    commit type: HIGHLIGHT
    commit
    commit tag:"v7.1.1"
    commit

히스토리가 정리되면 위와 같이 된다. 병합 시 발생하는 충돌을 살펴보았는데 이외에도 굉장히 많은 케이스의 merge conflict 가 일어날 수 있다. 이를 대비하기 위해서는 항상 주기적으로 기본 브랜치의 커밋을 따라가도록 sync 를 맞춰줄 필요가 있으며 기본 브랜치에 큰 변경 사항이 생긴다면 (리팩토링 및 기능 추가 등) 그전에 기본 브랜치 기반으로 개발하는 브랜치들을 merge 또는 close 로 마무리하는 습관을 가지는 것을 권장한다.

This post is licensed under CC BY 4.0 by the author.
If you find any errors, please let me know by comment or email. Thank you.

© Ruffalo. Some rights reserved.

I'm

Using the Chirpy theme for Jekyll.