Подтвердить что ты не робот

Почему я не могу использовать TortoiseMerge в качестве инструмента для слияния git в Windows?

Я пытаюсь выполнить мое первое слияние Git когда-либо (захватывающее!), но не может получить Git Gui (0.13.GITGUI от Git 1.7.4.msysgit.0), чтобы распознать TortoiseMerge ( 1.6.11.20210 x64) в Windows 7. На основе ответа на аналогичный вопрос я внес следующие изменения конфигурации:

$ git config --global merge.tool tortoisemerge
$ git config --global mergetool.tortoisemerge.cmd 'TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"'
$ git config --global --list
...snip...
merge.tool=tortoisemerge
mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
$

К сожалению, когда я запускаю Git Gui и пытаюсь "запустить инструмент слияния", я получаю сообщение об ошибке Unsupported merge tool 'tortoisemerge'.

Может ли кто-нибудь сказать мне, что я сделал неправильно? Здесь соответствующие разделы моего ~/.gitconfig:

[merge]
        tool = tortoisemerge
[mergetool "tortoisemerge"]
        cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"

Обновление

TortoiseMerge отлично работает с вышеуказанной конфигурацией при запуске git mergetool из командной строки. Кажется, что только Git Gui имеет проблемы с этим.: -/

4b9b3361

Ответ 1

Если у вас есть последний git, запустите эту командную строку один раз:

git config merge.tool tortoisemerge

Важно: Не добавляйте расширение .exe к команде.

Если это не удается, или если вы хотите добавить другой инструмент слияния, о котором git не знает, сделайте следующее:

Откройте в редакторе одно из следующих:

  • 64-бит git: C:\Program Files\Git\mingw64\share\git-gui\lib\mergetool.tcl
  • 32-бит git: C:\Program Files (x86)\Git\share\git-gui\lib\mergetool.tcl

Добавьте что-то вроде mergetool.tcl:

tortoisemerge {
    set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}

Положите новую запись черепахи над этим другим кодом:

default {
        error_popup [mc "Unsupported merge tool '%s'" $tool]
        return
}

Бонусный пример:

Чтобы использовать diffgerge SourceGear, добавьте это в mergetool.tcl:

diffmerge {
    set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}

Ответ 3

В случае, над которым я работал, слияние было уже установлено на tortoisemerge, но оно не могло найти его.

Обеспечение полностью квалифицированного местоположения, работающего в Windows:

git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""

Ответ 4

Попробуйте ввести TortoiseMerge.exe из командной строки, чтобы убедиться в этом в пути. Если не добавить его с помощью "Мой компьютер" > "Свойства" > "Дополнительно" > "Переменные среды" > "Системные переменные: путь".

Затем из командной строки настройте его с помощью следующих команд

git config --replace --global diff.tool tortoisemerge
git config --replace --global difftool.diffmerge.cmd "TortoiseMerge.exe -base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\""
git config --replace --global difftool.prompt false

Чтобы использовать его из командной строки, введите git difftool из своего рабочего каталога git.

Он отображает файлы по одному, поэтому вам все равно лучше устанавливать TortoiseGit, что упрощает обработку, даже если для части diff.

Ответ 5

Эта проблема появляется в последнем git (у меня есть git version 1.9.4.msysgit.1).

C:\git\build>git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff

C:\git\build>git config merge.tool tortoisemerge

C:\git\build>git mergetool
No files need merging