git
에서 merge
를 할때 사용하는 Three way merge
기법을 씁니다.
즉 자동으로 파일을 병합해줍니다. 또한 Two way merge
도 알아보면서 어떤 차이가 있는지도 알아보겠습니다.
Base
에 , , , 라는 내용이 있다고 가정해봅시다.
먼저 Me
에서 는 , 는 그대로 두고 는 로 , 는 제거했습니다.
그리고 Other
에서는 는 제거 , 는 그대로 , 는 2로 , 는 그대로 수정했다고 해봅시다.
2 way merge
는 Base
를 보지 않고 Me
와 Other
의 차이만 봅니다.
첫번째 줄에는 Me
는 , Other
는 공백이기 때문에 무엇을 선택해야할지 git
은 모르기 때문에
conflict
가 납니다.
두번째 줄에는 둘다 같으므로 그냥 를 씁니다.
세번째 줄에는 서로 내용이 다르기 때문에 git
은 무엇을 선택해야할지 모르기 때문에 conflict
가 발생합니다.
마지막 줄에도 Me
는 공백이지만 Other
에는 가 있기때문에 무엇을 선택해야할지 몰라서 conflict
가 발생합니다.
이제 3 way merge
에 대해 알아보겠습니다. 이는 Me
, Base
, Other
를 모두 고려하는 방법입니다.
첫번째 줄에서는 Base
에서 의 내용이 Other
에서 공백으로 수정하였기 때문에
수정한 내용을 따라가서 공백으로 병합합니다.
두번째 줄에는 변화가 없으므로 를 그대로 씁니다.
다만 세번째 줄에는 둘다 변화가 있으므로 conflict
가 발생합니다.
마지막 줄에는 Base
에서 가 Me
에서만 공백으로 수정되었기 때문에 공백으로 병합합니다.
즉 3 way merge
방법을 쓰면 2 way merge
방법보다 conflict
가 덜 발생하고 어떤것이 변화하였는지 더 명확하게 알 수 있다는 장점이 있습니다.
이상으로 2 way merge
와 3 way merge
에 대해 알아보았습니다.