Выполнение трехстороннего сравнения с Git и KDiff3
Можно ли настроить Git так, чтобы я мог использовать трехстороннее сравнение в KDiff3?
У меня есть две ветви, которые слишком различны для их автоматического слияния, я просто должен проверить каждую точку слияния, и я думаю, что лучшим способом было бы проверить ветку, я хочу изменения от другой ветви и сказать
git difftool HEAD_OF_OTHER_BRANCH -- .
И затем выберите Объединить файл в KDiff3. После просмотра файлов я просто фиксирую.
Я настроил merge.conflictstyle и diff.conflictstyle на diff3, но KDiff3 по-прежнему начинается с двухстороннего сравнения. Это возможно? Я думаю, если Git также отправляет хэш общего предка в качестве параметра, это возможно, но так ли это?
Существует дискуссия о том, как сделать это с SVN и BC3, но я не смог найти ничего для Git и KDiff3.
2 ответа
Похоже, что git diff выполняет только двухстороннее сравнение (что имеет смысл создавать патчи и т. Д.), За исключением состояния слияния, для этого вы должны выполнить слияние. Я был в аналогичной ситуации на днях, и я в конечном итоге Mergin, используя ours
стратегия. Это сработало, но не было идеальным. Возможно, нам нужна стратегия слияния "без разрешения", которая не пытается разрешить конфликты. Вы можете эмулировать это путем настройки файлов.git/MERGE_* и установки всех файлов как конфликтующих.
В противном случае очевидное решение состоит в том, чтобы проверить 3 различных каталога и запустить kdiff3, но я думаю, что вы ищете более элегантное решение
Запустите это в командной строке:
git config --global mergetool.kdiff3.path /path/for/your/kdiff3/binary
Затем, при разрешении конфликтов, вам просто нужно сделать:
git mergetool --tool=kdiff3