아래와 같은 케이스를 생각해보자. 동일한 소스코드(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 |