Как использовать Winmerge с расширениями Git?
Я использую Git Extensions, и он предварительно устанавливает и настраивает KDiff в качестве инструмента сравнения для решения конфликтов слияния. Я очень люблю Winmerge, хотя и хотел бы заменить KDiff на Winmerge.
В настройках Git Extensions есть настройки для изменения Mergetool, но я не могу понять, какой синтаксис мне следует использовать и почему. Кажется, есть 4 переменные: $BASE, $LOCAL, $REMOTE, $MERGED. Кажется, что я должен передать их WinMergeU.exe, но с какими параметрами командной строки?
Я пытался найти это несколько раз, но нет никакого ответа, который действительно, кажется, работает.
5 ответов
обзор
Ниже приведены инструкции по настройке GIT Version Control, чтобы вы могли использовать лучший набор инструментов, чем установка по умолчанию. Настройка требует, чтобы расширения GIT уже были установлены, и включает настройку Winmerge в расширениях GIT.
Монтаж
Просмотрите все запросы и установите их в каталог по умолчанию для Winmerge.
Настройте Winmerge в GIT Version Control
Откройте новый документ в текстовом редакторе. Скопируйте / вставьте следующее и сохраните документ как "wMerge.sh" в папку "C:\Program Files (x86)\Git\bin\".
echo Launching WinMerge: $1 $2 "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "$1" "$2"
Перейдите в каталог "Users->username" и найдите файл.gitconfig. Откройте его в своем любимом редакторе, скопируйте / вставьте следующий код и сохраните:
[user]
name = enter your name
email = youremail@yourdomain.com
[core]
autocrlf = false
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = wMerge.sh \"$MERGED\" \"$REMOTE\"
path = c:/Program Files (x86)/winmerge/winmergeu.exe
[mergetool]
keepBackup = false
trustExitCode = false
[diff]
guitool = winmerge
[difftool "winmerge"]
path = c:/Program Files (x86)/winmerge/winmergeu.exe
cmd = \"c:/Program Files (x86)/winmerge/winmergeu.exe\" \"$LOCAL\" \"$REMOTE\"
Запустите "GitExtensions", зайдите в "Инструменты-> Настройки->Git Extensions->Git Config". Если вы правильно выполнили установку и сослались на инструменты в их каталоге, ваша страница глобальных настроек должна выглядеть следующим образом (ПРИМЕЧАНИЕ. Пожалуйста, введите свое имя на имя и адрес электронной почты):
mergetool: winmerge
путь к mergetool: c:/Program Files (x86)/winmerge/winmergeu.exe
команда mergetool: wMerge.sh "$MERGED" "$REMOTE"
difftool: winmerge
путь к difftool: c:/Program Files (x86)/winmerge/winmergeu.exe
команда difftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
окончания строки: оформить как есть, зафиксировать как есть
Перейдите на вкладку контрольного списка, чтобы убедиться, что GIT все "зеленый" и удовлетворен вашими настройками.
На Git Extensions v2.47.3 это действительно легко настроить:
Настройки -> Глобальные настройки -> в раскрывающемся списке "Mergetool" введите вручную: WinMerge
и смотреть чудо.
То же самое для раскрывающегося списка "Difftool".
|| || ||
\/ \/ \/
Просто глупо, что опция "WinMerge" не указана в выпадающем списке. Ну что ж.
На Windows 7 это то, что, наконец, сработало для меня. Обратите внимание "'c:/path/here'"
кавычки вокруг моего пути к программным файлам.
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$MERGED"
[diff]
tool = winmerge
[difftool "winmerge"]
cmd = "'C:/Program Files (x86)/WinMerge/WinMergeU.exe'" -e "$LOCAL" "$REMOTE" -dl "Local" -dr
Ответ @sebastiaan у меня не сработал (может быть, он устарел?)
Это "Глобальные настройки", которые работают для меня, используя GitExtensions 2.28:
Mergetool: winmerge
Путь к mergetool: D:/path/to/WinMerge/WinMergeU.exe
Команда Mergetool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$MERGED"
Это заставляет WinMerge использовать "файл конфликта", сгенерированный git.-e
позволяет нажать ESC, чтобы закрыть winmerge.
Difftool: winmerge
Путь к difftool: D:/path/to/WinMerge/WinMergeU.exe
Команда Difftool: "D:/path/to/WinMerge/WinMergeU.exe" -e "$LOCAL" "$REMOTE" -dl "Local" -dr "Remote"
-dl
а также -dr
установите описания для левой и правой панели.
Добавьте или измените следующее в файле конфигурации:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
Это решение отличается двумя способами:
- Просто звонит
WinMergeU.exe *conflictfile*
в то время как двусторонние вызовы страдают от того, что левое окно представляет<<<<<<<
,=======
, а также>>>>>>>
маркеры, которые содержит $MERGED. - Примените mergetool для каждого репо - я редактирую файл $GIT_DIR/config. Тот же результат может быть достигнут путем вызова git config без аргумента --system или --global. Следует отметить, что есть несколько областей конфигурации на выбор.
Переменная $PROGRAMFILES поддерживается git bash и (в отличие от аналогичной переменной на собственном cmd Windows) перемещается в "Program Files (x86)".