Выполнение трехстороннего сравнения с 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