Почему я не могу использовать TortoiseMerge в качестве инструмента git merge для Windows? - PullRequest
45 голосов
/ 04 марта 2011

Я пытаюсь выполнить свое первое слияние 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 имеет проблемы с этим. : - /

Ответы [ 5 ]

56 голосов
/ 13 апреля 2013

Если у вас последний 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"]
}

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

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

Пример бонуса:

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

diffmerge {
    set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}
17 голосов
/ 04 марта 2011

Попробуйте это:

[merge]
tool = tortoise

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

Источник: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/

4 голосов
/ 31 октября 2013

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

Предоставление полностью определенного местоположения, работающего в Windows:

git config --global mergetool.tortoisemerge.cmd "\"C:\\Program Files\\TortoiseGit\\bin\\TortoiseGitMerge.exe\" -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\""
2 голосов
/ 25 марта 2012

Попробуйте набрать 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, что упрощает работу, даже если только дляразная часть.

1 голос
/ 01 апреля 2015

Эта проблема, похоже, решена в последнем 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
...