Git merge 충돌 - conflict

Kevin·2022년 6월 5일
0
post-thumbnail

오늘도 백엔드 스프링 테스트 케이스를 열심히 짜던 도중에 Git merge 충돌이 났다.

Git conflict 이란 무엇인가?

간단하게 말하자면, 기본 base 코드에, 여러 branch로 작업하는 일이 있을 때

동일한 부분 위치한 코드를 각자 브랜치마다 다르게 수정하고 병합하고자 할 때 일어나는 알림이다.

각 브랜치별로 다른 부분을 수정했다면 Git은 브랜치 별로 수정된 부분만 각자 정리해서 쏘옥 모아주면 되지만

둘다 같은 구역을 다르게 수정하고 합쳐달라고 한다면? 뭐로 수정해야돼??? 너가 알아서해 라는 느낌이다.

"무엇을 A안과 B안중에 merge 하고 싶은 지 알려줘!"

유튜버 생활코딩의 git conflict - 알면 기능, 모르면 사고라는 영상에는 이렇게 설명한다.

그럼 어떻게 이 문제를 해결할 수 있는가?

대표적인 방법으로 위의 사진과 같은 3-way merge 방법이 있다.

A와 B의 둘다 수정한 안을 합쳐서 병합하는 방법이다.

Cherry-pick

git rebase exp

merge는 있는 그대로 병합, rebase는 조작을해서 작업 순서를 일렬로 만들어준다.

일렬로 만들게 되면 나중에 디버깅 하기도 편하고 한눈에 알아보기 쉬워진다는 장점이 있으나 어렵다.

git revert 뒤로 돌아가고 싶을 때, (잘 안쓰긴 하지만)

다음과 같은 경우 conflict가 날 수가 있다.

중간에 한번 수정 된 적이 있기 때문에, 어떤 것으로 돌아가야 하는지 알지 못하기 때문에 오류가 발생한다.

글을 마치며..

git이 제공하는 코드 관리와 협업의 중요한 점은 말할 필요도 없이 중요하고 편리한 기능이다.

제공하는 기능을 알맞게 사용하고 헷갈리지 않으려면 이렇게 글로 한번 정리하고 실제로 오류를 맞닥 뜨려야 발전해나가는 것 같다.

profile
성장해나가는 개발자입니다.

0개의 댓글