Git: как настроить KDiff3 как инструмент слияния и инструмент diff

недавно я использовал GitExtension 2.46, но версия Git, которая имеет то же самое, 1.9.4.msysgit.2. Желая использовать только команды Git, я удалил GitExtension и установил последнюю версию Git и KDiff3.

когда я делаю слияние и имею конфликты, я запускаю следующую команду:

$ git mergetool

затем я получаю сообщение:

инструмент слияния kdiff3 недоступен как 'kdiff3'.

Я думаю,это должно быть путем KDiff3.

окружающая среда

  • ОС: Windows 10
  • Git 2.6.1.окна.1
  • KDiff3 0.9.98 (64-разрядная версия)

вопросы:

  • что мне нужно настроить в .файл gitconfig для команды $ git mergetool чтобы открыть графический интерфейс KDiff3 с версиями местные, пульт ДУ, базовый и слил конфликтного файла?

  • Как настроить его для использования, у него есть diff-tool?

4 ответов


эти сайты были очень полезны, почти, mergetool и difftool в деталях. Я использовал глобальную конфигурацию, но могу использоваться репозиторием без проблем. Вам просто нужно выполнить следующие команды:

git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add mergetool.kdiff3.trustExitCode false

git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add difftool.kdiff3.trustExitCode false

использование trustExitCode опция зависит от того, что вы хотите сделать, когда инструмент diff возвращается. От документация:

git-difftool вызывает инструмент diff индивидуально на каждый файл. Ошибки, сообщаемые инструментом diff, по умолчанию игнорируются. Использовать --trust-exit-code сделать git-difftool exit когда вызванный инструмент diff возвращает ненулевой код выхода.


просто продлить ответ @Иосифа:

после применения этих команд ваш global .gitconfig файл будет иметь следующие строки (чтобы ускорить процесс, вы можете просто скопировать их в файл):

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    trustExitCode = false
[diff]
    guitool = kdiff3
[difftool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    trustExitCode = false

проблема в том, что Git не может найти KDiff3 в %PATH%.

в типичной установке Unix все исполняемые файлы находятся в нескольких известных местах (/bin/, /usr/bin/, /usr/local/bin/, etc.), и можно вызвать программу, просто введя ее имя в процессоре оболочки (например,cmd.exe :) ).

в Microsoft Windows программы обычно устанавливаются в выделенные пути, поэтому вы не можете просто ввести kdiff3 на cmd сеанс и получить KDiff3 бегущий.

жесткое решение: вы должны сказать Git, где найти KDiff3, указав полный путь к kdiff3.exe. К сожалению, Git не любит пробелы в спецификации пути в своей конфигурации, поэтому в последний раз, когда мне это было нужно, я закончил с этими древними "C:\Progra~1...\kdiff3.ехе", как будто это было в конце 1990-х годов :)

простое решение: измените настройки компьютера и включите каталог с kdiff3.exe в %PATH%. Затем проверьте, можете ли вы вызвать его из cmd.exe с его именем а затем запустите Git.


Мне нужно было добавить параметры командной строки, или KDiff3 откроется только без файлов и предложит мне базу, локальную и удаленную. Я использовал версию, поставляемую с TortoiseHg.

кроме того, мне нужно было прибегнуть к старым добрым именам файлов DOS 8.3.

[merge]
    tool = kdiff3

[mergetool "kdiff3"]
    cmd = /c/Progra~1/TortoiseHg/lib/kdiff3.exe $BASE $LOCAL $REMOTE -o $MERGED

однако теперь он работает правильно.