본문 바로가기

블로그/기타

[Git] 3 way merge

아래와 같은 케이스를 생각해보자. 동일한 소스코드(Base)에서 나(Me)와 다른 사람(Ohter)이 소스 코드를 아래와 같이 수정하였다.

  Me Base Other 2 way merge 3 way
merge
1 A A 내용 삭제 Conflit 내용 삭제
2 B B B B B
3 1 C 2 Conflit Conflit
4 내용 삭제 D D Conflit 내용 삭제

 

위 테이블을 하나로 병합하는 방식은 2 way 그리고 3 way merge 방식이 있다.

2 way merge는 Base를 보지 않고 2개의 차이점을 비교해서 병합하는 것이며, 3 way merge는 Base를 참고하여 달라지는 내용을 병합하는 것이다. 

 

결과를 보면, 2 way merge는 Me와 Other이 다르면, Merge를 수행할 때 Conflit를 도출하게 된다. (같은 라인에 다른 내용)

하지만 3 way merge에서는 1번과 4번에서 케이스에서 Base와 Other이 다르기 때문에, Other의 내용으로 Merge를 수행하게 된다.

 

따라서, 3 way merge에서는 Me와 Base 그리고 Other이 모두 다를 때만 Conflit을 도출하게 되며, 수정된 코드가 하나라도 다른 경우에서는 변경된 내용을 Merge하게 된다. 

'블로그 > 기타' 카테고리의 다른 글

[YAML] 기본 문법  (0) 2024.01.17
[Git] git stage area + log + diff + reset  (2) 2024.01.08
[Git] init - add - commit - log  (1) 2024.01.08