Как использовать Winmerge с расширениями Git?
Я использую Расширения Git и он предварительно устанавливает и настраивает KDiff как инструмент diff для решения конфликтов слияния. Я очень люблю Winmerge, хотя и хотел бы заменить KDiff на Winmerge.
в настройках расширений Git есть настройки для изменения Mergetool, но я не могу понять, какой синтаксис я должен использовать и почему. Кажется, есть 4 переменные: $BASE, $LOCAL, $REMOTE, $MERGED. Кажется, я должен передать их WinMergeU.exe, но с какие параметры командной строки?
Я пытался найти это несколько раз, но нет ответа, который действительно работает.
5 ответов
обзор
Ниже приведены инструкции по настройке Git Version Control, чтобы вы могли использовать лучший набор инструментов, чем установка по умолчанию. Установка требует, чтобы расширения GIT уже установлены и включает в себя настройку Winmerge в расширениях GIT.
установка
Пройдите все подсказки и установите в каталог по умолчанию для Winmerge.
настройка Winmerge в версии GIT Контроль
Откройте новый документ в текстовом редакторе.
Скопируйте / вставьте следующее и сохраните документ как "wMerge.sh-за твое ...C:\Program каталог файлов (x86)\Git\bin\".
echo Launching WinMerge: "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -u -dl "Original" -dr "Modified" "" ""
перейти к каталогу" Пользователи->Имя пользователя " и найдите .файл 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", goto"tools->Settings->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"
окончание строки: checkout as-is, commit as-is
Перейдите на вкладку контрольный список, чтобы убедиться, что GIT-это все "зеленый" и доволен вашей установкой.
на расширениях Git 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 и (в отличие от аналогичной переменной в собственном Windows cmd) переходит в "Program Files (x86)".