[GIT] 3 way merge (병합 방법)

MJ·2022년 8월 18일
2

GIT

목록 보기
18/33
post-thumbnail

☘️ 3 way merge

서로 다른 브랜치에 공통되는 base branch를 기점으로 충돌을 최소화 시키는 방법

브랜치간의 병합을 진행할 때, base를 기준으로 어떠한 브랜치의 파일이 수정되었는지
확인할 수 있어서 충돌의 문제를 해결하는데 효과적입니다.


3 way merge 이해하기

My branchOther branch 의 공통적인 정보를 갖고 있는 commit Base
먼저, commit Base가 없을 경우에 충돌발생을 해결하는 방법을 예로 들어보겠습니다.


base commit 존재 X

1. My branchOther branch를 병합하려고 합니다.
2. 병합 진행 중에 브랜치간의 특정한 파일에서 충돌이 발생합니다.
3. 충돌을 해결하기 위해서 파일을 열어보니, 두 개의 브랜치간의 파일 내용이 다릅니다.
4. 두 개의 브랜치에 두번 째줄 b 말고는, 어떤 파일이 수정되었는지 알 수가 없어서
어떤 브랜치의 파일 내용을 선택해야 하는지 알 수 없습니다.

5. 이럴 경우에는 모든 브랜치의 파일을 확인해서 수동으로 3개의 충돌을 해결해야 한다.

이렇게 충돌되는 부분을 수동으로 해결 할 때, 최소화 시키기 위해서 base commit을 사용.


Base commit 존재 O

1. my branchother branch를 병합
2. 세번 째 줄을 제외하고는 충돌이 발생하지 않았습니다.
3. base commit을 보고 병합했기 때문에, 어떤 파일에서 수정을 했는지 확인할 수 있어서
세번 째 줄을 제외하고는 파일을 수정한 저장소의 내용을 선택 합니다.
4. 세번 째 줄은 두 브랜치에서 모두 수정했기 때문에, base를 비교해봐도 어떤 내용을
선택해야 할지 모릅니다. 이런 부분은 수동으로 해결해주시면 됩니다.

이런식으로, 모든 충돌을 자동으로 해결할 수는 없지만, 대부분의 충돌 발생 상황을 GIT에서
자동적으로 해결해줍니다.

이렇게 base commit을 참조해서 충돌을 해결하는 방식을 3 way merge 라고 합니다.



3 way merge 사용

1. main branch에서 파일 커밋 후 2개의 브랜치를 생성 합니다.


2. here branch에서 파일 수정 후 커밋


3. there branch에서 파일 수정 후 커밋


4. GIT 내역 확인


5. here branch에서 there branch를 병합하고 결과 확인


6. 충돌 해결 후 커밋 결과 확인

GIT에서 자동적으로 병합할 때 상황에 맞게 fast-forward 또는 3 way mergre 방식을
선택하는 것을 알 수 있습니다.

profile
프론트엔드 개발자가 되기 위한 학습 과정을 정리하는 블로그

0개의 댓글