Это случилось со мной, когда diffmerge был установлен через pkg install вместо установщика. Это явно не настраивает ваш bash на то, чтобы знать команду diffmerge
, поэтому вы должны указать путь к diffmerge (или обновить конфигурацию вашего бина).
Чтобы решить эту проблему, я вручную сконфигурировал Visual Diff Tool и Merge Tool (с той выгодой, что вы можете отключать этот надоедливый экран-заставку при запуске каждый раз).
Страница настроек в исходном дереве
Diff
Команда: /usr/local/bin/diffmerge
Аргументы --nosplash "$LOCAL" "$REMOTE"
Слияние
Команда: /usr/local/bin/diffmerge
Аргументы --nosplash --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
Аргумент --nosplash является необязательным, но предотвращает (на мой взгляд, бесполезный) всплывающее окно, которое вам всегда нужно закрывать, прежде чем вы сможете начать работу.
Git config file:
[core]
excludesfile = /Users/[username]/.gitignore_global
[user]
name = ---------
email = ---------@------.--
[commit]
template = /Users/[username]/.stCommitMsg
[credential]
helper = !/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/java -Ddebug=false -Djava.net.useSystemProxies=true -jar /usr/local/Cellar/git-credential-manager/2.0.4/libexec/git-credential-manager-2.0.4.jar
[difftool "DiffMerge"]
[mergetool "DiffMerge"]
[diff]
tool = diffmerge
[difftool "diffmerge"]
cmd = /usr/local/bin/diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
tool = diffmerge
[mergetool "diffmerge"]
trustExitCode = true
cmd = /usr/local/bin/diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
[difftool "sourcetree"]
cmd = /usr/local/bin/diffmerge --nosplash \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /usr/local/bin/diffmerge --nosplash --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\"
trustExitCode = true
Дополнительная информация об аргументах командной строки diffmerge:
Разница: https://sourcegear.com/diffmerge/webhelp/sec__clargs__diff.html
Слияние: https://sourcegear.com/diffmerge/webhelp/sec__clargs__merge.html