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 с версиями местные, REMOTE,базовый и слил конфликтного файла?


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


997   4  

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

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

после применения этих команд глобального .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/ и т. д.), и можно вызвать программу, просто введя ее имя в процессоре оболочки (например,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

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

Comments

    Ничего не найдено.