Digamos que você e seu amigo fizeram check-out de um arquivo e fizeram algumas alterações. Você removeu uma linha no início e seu amigo adicionou uma linha no final. Em seguida, ele confirmou o arquivo e você precisa mesclar as alterações dele na sua cópia.
Se você estivesse fazendo uma mesclagem bidirecional (em outras palavras, um diff), a ferramenta poderia comparar os dois arquivos e verificar se a primeira e a última linhas são diferentes. Mas como saberia o que fazer com as diferenças? A versão mesclada deve incluir a primeira linha? Deve incluir a última linha?
Com uma mescla de três vias, ele pode comparar os dois arquivos, mas também pode comparar cada um deles com a cópia original (antes de qualquer um de vocês ter alterado). Então, você pode ver que você removeu a primeira linha e que seu amigo adicionou a última linha. E pode usar essas informações para produzir a versão mesclada.
Este slide de uma apresentação forçada é interessante:
fonte
Eu escrevi um post muito detalhado sobre isso . Basicamente, você não pode rastrear exclusões / acréscimos com duas vias, muito, muito improdutivas.
fonte
Uma mesclagem de três maneiras em que dois conjuntos de alterações em um arquivo base são mesclados à medida que são aplicados, em vez de aplicar um e mesclar o resultado com o outro.
Por exemplo, ter duas alterações em que uma linha é adicionada no mesmo local pode ser interpretada como duas adições, não uma alteração de uma linha.
Por exemplo
O arquivo a foi modificado por duas pessoas, uma adicionando alces e outra adicionando um mouse.
Agora, se mesclarmos os conjuntos de alterações à medida que os aplicamos, obteremos (mesclagem bidirecional)
Mas se aplicarmos b, observe a mudança de b para c, parecerá que estamos apenas alterando a 'u' para a 'o' (mesclagem bidirecional)
fonte