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
однако теперь он работает правильно.