Как использовать Winmerge с расширениями Git?
Я использую Git Extensions, и он предварительно устанавливает и устанавливает KDiff в качестве инструмента diff для разрешения конфликтов слияния. Я очень люблю Winmerge и хотел бы заменить KDiff на Winmerge.
В настройках Git Extensions есть настройки для изменения Mergetool, но я не могу понять, какой синтаксис я должен использовать и почему. Кажется, есть 4 переменные: $BASE, $LOCAL, $REMOTE, $MERGED. Кажется, что я должен передать их в WinMergeU.exe, но с какими параметрами командной строки?
Я пытался найти это несколько раз, но нет ответа, который, по-видимому, работает.
Ответы
Ответ 1
Обзор
Ниже приведены инструкции по настройке GIT Version Control, чтобы вы могли использовать лучший набор инструментов, чем установка по умолчанию. Для установки требуется, чтобы GIT Расширения уже были установлены и включали настройку Winmerge в расширениях GIT.
Установка
Пройдите все подсказки и установите в каталог по умолчанию для Winmerge.
Настроить Winmerge в GIT Управление версиями
Откройте новый документ в текстовом редакторе.
Скопируйте/вставьте следующее и сохраните документ как "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"
Перейдите в каталог "Пользователи- > имя пользователя" и найдите файл .gitconfig. Откройте его в своем любимом редакторе, скопируйте/вставьте следующий код и сохраните:
[user]
name = enter your name
email = [email protected]
[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", перейдите в "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
Команда diffftool: "c:/Program Files (x86)/winmerge/winmergeu.exe" "$LOCAL" "$REMOTE"
line endings: checkout as-is, commit as-is
Перейдите на вкладку контрольного списка, чтобы убедиться, что GIT является "зеленым" и удовлетворен вашей настройкой.
Ответ 2
В Git Расширения v2.47.3 это очень просто установить:
Настройки → Глобальные настройки → в раскрывающемся списке для "Mergetool" пишите вручную: WinMerge
и смотрите чудо.
То же самое для раскрывающегося списка "Difftool".
|| || ||
\/ \/ \/
Просто глупо, что опция "WinMerge" не была предварительно заполнена в раскрывающемся списке. О, хорошо.
Ответ 3
В 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
Ответ 4
@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
задайте описания для левой и правой панели.
Ответ 5
Добавьте или измените следующее в файле конфигурации:
[merge]
tool = winmerge
[mergetool "winmerge"]
cmd = $PROGRAMFILES/WinMerge/WinMergeU.exe "$PWD/$MERGED"
Это решение отличается двумя способами:
- Просто вызывает
WinMergeU.exe *conflictfile*
, в то время как двусторонние вызовы страдают от того, что в левом окне представлены метки <<<<<<<
, =======
и >>>>>>>
, которые содержат $MERGED.
- Применить mergetool по принципу per-repo - я редактирую файл $GIT_DIR/config. Тот же результат может быть достигнут путем вызова git config без аргументов --system или --global. Это означает, что есть несколько областей конфигурации, которые можно выбрать из.
Переменная $PROGRAMFILES поддерживается git bash и (в отличие от аналогичной переменной на родных окнах cmd) она переходит к "Program Files (x86)".