Почему я не могу настроить внешний difftool или mergetool для Git?
Я пытаюсь настроить внешний difftool и mergetool для Git под Windows 10.
Все говорит мне набрать две команды Git, подобные приведенным ниже. Некоторые говорят, чтобы использовать wrapper.sh
в то время как другие говорят, что это не обязательно.
git config --global diff.tool diffmerge
(Вторая строка выглядит примерно так:)
git config --global difftool.diffmerge.cmd "path to sgdm.exe or some_wrapper.sh" $LOCAL $REMOTE**
Это не работает для меня. Я также попробовал:
git config --global difftool.diffmerge.cmd C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\"
git config --global difftool.diffmerge.cmd C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe "$LOCAL" "$REMOTE"
git config --global difftool.diffmerge.cmd "C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe $LOCAL $REMOTE"
Мой конфигурационный файл выглядит так:
[filter "lfs"]
clean = git-lfs clean %f
smudge = git-lfs smudge %f
required = true
[user]
name= John Doe
[diff]
tool = dm
[difftool]
prompt = true
[difftool "dm"]
cmd = \"C:\\Program Files\\SourceGear\\Common\\DiffMerge\\sgdm.exe\" \"$LOCAL\" \"$REMOTE\" //t
Что я делаю неправильно?
2 ответа
Похоже, вы можете быть довольны полноценным GUI-клиентом. Я использовал Sourcetree для интеграции с внешними инструментами слияния (в OSX). И на самом деле, встроенный в Sourcetree инструмент слияния тоже великолепен.
Проверьте свой глобальный .gitconfig
файл, чтобы убедиться, что пути оказались в правильном формате (с кавычками вокруг путей с пробелами и т. д.).
Вот мой соответствующий раздел из моего файла конфигурации:
[diff]
tool = vsdiffmerge
[difftool]
prompt = true
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
keepbackup = false
trustexistcode = true