[Git] 3-way 병합
3-way 병합
지난 포스트에서 다룬 Fast-Forward 병합은 순차적으로 분기되어 작업된 브랜치를 병합하는데 사용한 병합 방식이었습니다. 작업이 순차적으로 진행되기 때문에 병합과정에서 따로 신경써야할 부분은 없었습니다.
오늘 다루는 3-way 병합
은 좀 더 복잡한 상황에서의 병합 방식입니다. 다른 개발자와 작업을 진행하게 되는 경우 내가 분기한 브랜치, 다른 개발자가 분기한 브랜치에서 작업이 이루어지게 됩니다.이때 브랜치 상황은 내가 작업하는 브랜치의 커밋
, 다른 개발자가 작업하는 브랜치의 커밋
, 두 브랜치의 공통 분기점이 되는 공통 커밋
세 가지의 커밋이 남게 됩니다. 그래서 이런 경우의 병합을 세 브랜치들을 종합해서 병합하기 때문에 3-way 커밋
이라고 부릅니다.
3-way 병합 실습
지난 포스트에 이어서 위와 같은 파일 구조를 가진 디렉토리에서 실습을 진행합니다. 새로 만들어서 진행해도 상관없습니다.
지난 포스트에 이어서 위와 같은 파일 구조를 가진 디렉토리에서 실습을 진행합니다. 새로 만들어서 진행해도 상관없습니다.
그러면 3-way 병합
을 실습을 통해 알아보도록 하겠습니다.
먼저, Me
라는 이름의 브랜치를 생성합니다.
git branch Me
그 다음 Me
브랜치로 이동한 뒤 t1.txt
파일을 수정하고, 커밋까지 완료해주세요.이후 t2.txt
파일도 수정하고 커밋해주세요. 그러면 현재 작업상황은 다음과 같습니다.
이번엔 master
브랜치로 돌아와서 작업을 합니다. t1.txt
를 수정하고 커밋해주세요. 이때 Me
브랜치에서 3번째 줄을 수정했었는데, 마스터에서 3번째 줄을 건드리게 되면 병합 충돌이 발생합니다. 병합 충돌에 대해서는 따로 다룰 예정이니, 3번째 줄이 아닌 다른 부분을 수정해주세요. 그 다음 t3.txt
도 아무렇게나 수정하고 커밋해줍니다. 현재 진행상황을 그림으로 나타내면 다음과 같습니다.
그러면 이제 브랜치들을 병합해볼 차례입니다. 기준이 되는 공통 부모 커밋, Me 브랜치의 최신 커밋, master 브랜치의 최신 커밋을 가지고 병합을 진행합니다.
3-way 병합
은 병합이 완료될 때 커밋을 하나 생성합니다. 기존 마스터 브랜치에 갖다붙여서 브랜치의 최신 커밋이 마스터의 최신 커밋이 되었던 Fast-Forward 병합
과는 다른점 입니다. 이때 Merge branch '브랜치명'
이라는 커밋 메세지가 자동으로 붙는데, 이 메세지를 바꾸고 싶다면 merge
명령 뒤에 --edit
옵션을 붙여줍니다.
git merge 브랜치이름 --edit
다음과 같은 화면에서 노란 부분의 메세지를 수정해주면 됩니다.
이렇게 3-way 병합
을 해봤는데요. 이 과정을 bash에서 graph로 확인해보면 다음과 같이 나타납니다.
Author And Source
이 문제에 관하여([Git] 3-way 병합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bami/Git-3-way-병합저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)