Для трёхстороннего слияния используется git ТРИ версии файла: "наша" версия, "их" версия, то есть версии, которые вы хотите объединить, но вам также нужна "общая" версия то есть версия файла, которая была общим источником для "нашей" и "их" версии; для Git это будет версия из базы слияния текущей ветви и ветви, которую вы объединяете.
Алгоритм и способ помечать конфликты слиянием, которые использует Git, почти такой же, как тот, который используется инструментом rcsmerge
из RCS (давно Git требовал установки rcsmerge), и diff3 -E
. Вы можете запустить его вручную, используя команду низкого уровня (сантехника) git merge-file
.