Выполнение трехстороннего сравнения с Git и KDiff3

Можно ли установить Git вверх, чтобы я мог использовать трехстороннее сравнение в KDiff3?

У меня есть две ветки, которые слишком отличаются друг от друга, чтобы автоматически объединить их. Мне просто нужно проверить каждую точку слияния, и я думаю, что лучший способ - проверить ветвь, я хочу изменения из другой ветки, и скажу

git difftool HEAD_OF_OTHER_BRANCH -- .

Затем выберите "Объединить файл" в KDiff3. Пройдя через файлы, которые я только что совершил.

Я установил merge.conflictstyle и diff.conflictstyle для diff3, но KDiff3 все еще начинается с двухстороннего разграничения. Это возможно? Я думаю, если Git также отправляет общий хэш-символ предка в качестве параметра, это возможно, но делает это?

Существует обсуждение о том, как это сделать с SVN и BC3, но я ничего не мог найти для Git и KDiff3.

Ответ 1

Кажется, что git diff выполняет только двухсторонний diff (который имеет смысл генерировать патч и т.д.), за исключением состояния слияния, для этого вам нужно слить. На днях я был в подобной ситуации, и я закончил слияние с помощью стратегии ours. Это сработало, но не было идеальным. Может быть, нам нужна стратегия неразрешения, которая не пытается разрешить какие-либо конфликты. Возможно, вы сможете эмулировать это путем настройки файлов .git/MERGE_ * и установить все файлы как конфликтующие.
В противном случае очевидным решением является проверка 3 разных каталогов и запуск kdiff3, но я думаю, вы ищете более элегантное решение

Ответ 2

Запустите это в командной строке:

git config --global mergetool.kdiff3.path /path/for/your/kdiff3/binary  

Затем при разрешении конфликтов вам просто нужно:

git mergetool --tool=kdiff3