병합은 3 방향 병합을 수행합니다. 이것은 다음과 같이 작동하는 표준 알고리즘입니다.
- 가장 최근의 공통 조상 또는 기본 수정본이 있습니다. 이것은 분기가 만들어지기 직전의 개정판이나 한 버전에서 다른 버전으로 병합 된 마지막 개정판입니다.
- 'mine'(체크 아웃 한 항목)이 'base'로 같지만 'theirs'(병합 할 인수)가 다른 각 행에 대해 'theirs'에서 사용됩니다.
- 'theirs'가 'base'와 동일한 각 행에 대해 로컬 버전이 사용됩니다 (기본 버전에서 변경되지 않은 경우 포함).
- 'mine'과 'theirs'에서 동일한 각 행에 대해 '기본'이 무엇이든 그 버전이 사용됩니다.
- 'base', 'mine'및 'theirs'의 세 줄마다 다른 줄마다 충돌이 발생하여 수동으로 해결해야합니다.
이렇게 두 분기의 모든 변경 사항이 적용됩니다. 동일한 변경이 적용된 것보다 양쪽에서 수행 된 경우. 동일한 코드가 다른 방식으로 변경되면 충돌이 발생하고이를 해결해야합니다. 그리고 당신은 어떤 특정한 개정판이 어디에서 왔는지 보지 못할 것입니다.
이제 원하지 않는 옵션이 있다면 병합 할 리비전을 수동으로 나열하는 것입니다. 이것은 특정 개정판에서 한 번에 한 번에 각 연속 범위의 변경 사항을 적용합니다 (알고리즘은 실제로 동일하지만 기본은 선택한 범위의 시작 전에 개정입니다). 즉, 원하는 변경 사항을 직접 선택해야합니다. 이 접근 방식에는 두 가지 문제가 있습니다. 많은 작업이 필요하며 나중에 변경하기 위해 필요한 모든 변경 사항을 선택해야합니다.
이제 모든 "새로운"변경 사항을 원하십시오. 컴퓨터가 이해할 수있는 방식으로 어떤 의미인지 정의해야합니다. 그리고 위의 두 번째 문제인 —에주의해야합니다. 변경 사항은 서로 다를 수 있으므로 종속 된 변경 사항을 선택해야합니다.