git bash: не может создать kdiff3 как difftool
Я пытаюсь использовать KDiff3 в качестве difftool в Git Bash в системе Windows 8.1, и я, по общему признанию, довольно плохо знаком с Git. Я не могу открыть KDiff3, когда пытаюсь сравнить промежуточный файл с зафиксированным файлом, и я не совсем понимаю, что с этим делать. Я нашел в Интернете указания по настройке KDiff3 в качестве инструмента слияния, и я догадался, что мне нужно сделать что-то похожее, чтобы настроить его как инструмент сравнения (я не смог найти достаточно четких указаний для новичков для настройки diff инструмент, поэтому я здесь). Это то, что я сделал после загрузки и установки KDiff3:
git config --global diff.tool kdiff3
git config --global difftool.kdiff3.cmd '"C:\\Program Files\\KDiff3\\kdiff3" $BASE $LOCAL $REMOTE -o $MERGED'
Git не изобразил никаких ошибок на меня, так что, может быть, это правильно? Я полностью признаю, что не понимаю синтаксис здесь! Во всяком случае, когда я попробовал это:
git diff HEAD
Я получаю это:
error: cannot spawn kdiff3: No such file or directory
external diff died, stopping at MyFile.R
Я осмотрелся и вижу некоторые ссылки на людей, у которых были похожие проблемы, когда их $PATH не был установлен правильно. Я действительно не знаю, что такое $PATH (и если бы кто-то мог просветить меня, я был бы очень благодарен), но путь, который я получил для KDiff3 (C:\Program Files\KDiff3\kidff3), определенно где kdiff3.exe находится на моей машине. Какие-либо предложения?
Заранее спасибо, и, как я уже сказал, я новичок в Git, поэтому, если я не предоставил некоторую важную информацию, пожалуйста, дайте мне знать.
2 ответа
Я предлагаю вам отказаться от второй линии конфигурации, поскольку Git bash уже определил, как использовать kdiff3. (Вы можете посмотреть на вашу установку Git Bash. Например, по моему пути я могу найти C:\Program Files (x86)\Git\libexec\git-core\mergetools\kdiff3, который является файлом конфигурации для kdiff3), Единственное, что вам нужно сделать, это вставить kdiff3 в переменную PATH.
Используйте только свою первую строку:
git config --global diff.tool kdiff3
но НЕ ваша вторая строка:
#### comment out this line:
# git config --global difftool.kdiff3.cmd '"C:\\Program Files\\KDiff3\\kdiff3" $BASE $LOCAL $REMOTE -o $MERGED'
Чтобы исправить уже добавленный конфиг, попробуйте отредактировать ваш.gitconfig под GIT BASH
vim ~/.gitconfig
Найти раздел [difftool "kdiff3"]
и удалите строку с cmd=
под этим разделом. Вы также можете удалить весь раздел (т.е. также удалить строку, содержащую [difftool "kdiff3"]
Затем добавьте свой путь к kdiff3:
PATH=$PATH:"/c/Program Files/KDiff3"
Двойная кавычка необходима из-за пробела между "Program" и "Files".
Эта строка PATH может быть добавлена к вашему.bashrc или.bash_profile, в зависимости от того, как вы запустите ваш bash...
--- ОБНОВИТЬ ---
Исправление: поскольку Git Bash использует системную переменную среды Windows 'PATH' + пользовательскую переменную среды Windows 'PATH'. Вышеуказанное изменение PATH сложнее (с использованием.bashrc и т. Д.). Просто измените переменные среды Windows, например, эту ссылку и / или эту ссылку
Измените вторую строку в GitBash:
git config --global diff.tool kdiff3
git config --global difftool.kdiff3.path 'c:\Program Files\KDiff3\kdiff3.exe'
Соответствующий раздел в глобальном .gitconfig
выглядит так:
[diff]
tool = kdiff3
[difftool "kdiff3"]
path = c:\\Program Files\\KDiff3\\kdiff3.exe
И только для того, чтобы избежать путаницы:
Сейчас git difftool HEAD
катера kdiff3
,
Но git diff HEAD
все еще показывает изменения в GitBash.