기본 메인 브랜치의 상태이다.
C2 의 커밋에서 각 브랜치를 2개를 생성했다.
이후 각 브랜치마다 표의 내용처럼 내용을 변경한뒤 커밋을 진행했다.
T1-2 의 커밋과 T2-2 커밋을 병합하려고 한다.
이때 병합방식으로는 2way merge 와 3way merge 방식이 있는데,
먼저 2way merge의 방식을 보면 단지 2개의 커밋을 비교하는 방법이다.
병합 하려는 대상끼리 비교를 해 병합을 진행한다.
맨위부터,
A끼리는 서로 변경된 내용도없고 내용도 같으므로 그대로 병합을 진행
B, 내용이 사라짐 - 깃에서는 내용 B를 남겨야하는지 비워야하는지 모름 (충돌)
E,C 또는 G,M - 깃에서는 내용 어떤쪽의 내용을 남겨야하는지 비워야하는지 모름 (충돌)
이제 3way merge 방식을 보자
맨위부터,
A끼리는 변경된 내용이 없으므로 그대로 진행
B, B, 내용이 사라짐 -
병합을 진행하는데, Base의 커밋에서의 내용과 T1의 내용이 같다.
근데 T2에서는 달리 내용이 수정되었다. 수정된 쪽으로 병합을 진행한다.
E, C, C - T2에서는 변경이 없지만 T1에서는 수정이 있으므로 수정된 T1(E) 로 병합을 진행
G, D, M - 베이스의 내용에서 T1, T2 전부 내용이 수정이 일어났으므로
어느쪽의 내용으로 병합할지 모름 (충돌)
2way merge 방식은 서로 내용만 다르면 어느쪽이 변경이 되었는지 확인할수가 없으므로
서로 달랐던 부분은 전부 충돌을 띄워준다.
3way merge 방식은 반면 base 커밋의 내용을 참고해 어느쪽의 수정이 일어났는지,
수정이 일어난쪽으로 자동으로 병합을 진행하게된다.
'Git > 개념과 용어정리' 카테고리의 다른 글
Backup (0) | 2024.03.17 |
---|---|
Merge 병합 (0) | 2024.03.13 |
Branch 브랜치 (0) | 2024.03.13 |
Working Tree 와 Staging Area (0) | 2024.03.11 |
Git - Commit 과 Snapshot (0) | 2024.03.10 |