Как установить Meld как git mergetool
Я установил:
git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/
На "git mergetool" он пишет:
Hit return to start merge resolution tool (meld):
The merge tool meld is not available as 'c:/Progra~2/meld/bin/'
Я пробовал также:
- / С /Progra~2/ MELD / бен /
- "/ c / Программные файлы (x86)/meld/bin/"
- "c: / Программные файлы (x86)/meld/bin/"
результат тот же.
когда я иду в C:/Program Files (x86)/meld/bin/ и запускаю
python meld
инструмент работает.
10 ответов
Вы можете использовать полные пути Unix, такие как:
PATH=$PATH:/c/python26
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/meld/bin/meld
Это то, что описано в разделе " Как объединить работу с git на Windows "
Или вы можете принять подход обертки, описанный в " Использование Meld с Git в Windows "
# set up Meld as the default gui diff tool
$ git config --global diff.guitool meld
# set the path to Meld
$ git config --global mergetool.meld.path C:/meld-1.6.0/Bin/meld.sh
Со скриптом meld.sh
:
#!/bin/env bash
C:/Python27/pythonw.exe C:/meld-1.6.0/bin/meld $@
abergmeier упоминает в комментариях:
Я должен был сделать:
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe
Обратите внимание, что meldc.exe был специально создан для запуска в Windows через консоль. Таким образом meld.exe не будет работать должным образом.
CenterOrbit упоминает в комментариях Mac OS для установки homebrew, а затем:
brew install homebrew/gui/meld
git config --global merge.tool meld
git config --global diff.guitool meld
Это работало для меня на Windows 8.1 и Windows 10.
git config --global mergetool.meld.path "/c/Program Files (x86)/meld/meld.exe"
Смесь 3.14.0
[merge]
tool = meld
[mergetool "meld"]
path = C:/Program Files (x86)/Meld/Meld.exe
cmd = \"C:/Program Files (x86)/Meld/Meld.exe\" --diff \"$BASE\" \"$LOCAL\" \"$REMOTE\" --output \"$MERGED\"
После установки http://meldmerge.org/ мне пришлось сообщить git, где он находится:
git config --global merge.tool meld
git config --global diff.tool meld
git config --global mergetool.meld.path “C:\Program Files (x86)\Meld\meld.exe”
И это, кажется, работает. Как слияние, так и слияние с "git difftool" или "git mergetool"
Если кто-то сталкивается с такой проблемой, как сбой Meld после запуска (индикация проблемы с python), вам необходимо настроить Meld/lib для переменной вашей системной среды, как показано нижеC:\Program Files (x86)\Meld\lib
Я думаю что mergetool.meld.path
должен указывать непосредственно на исполняемый файл meld. Таким образом, команда, которую вы хотите:
git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld
Ни один из других ответов здесь не сработал для меня, возможно, от попытки сочетания всех из них. Я смог адаптировать этот принятый ответ для работы со смесью. Теперь это работает для меня с Git 1.9.4, Meld 3.14.0 и Windows 8.1.
Отредактируйте ~/.gitconfig так:
[diff]
tool = meld
guitool = meld
[mergetool "meld"]
path = c:/Program Files (x86)/Meld/Meld.exe
[difftool "meld"]
path = c:/Program Files (x86)/Meld/Meld.exe
Мне потребовалось несколько перестановок, чтобы объединить меня в окна. Это мой текущий.gitconfig:
[merge]
conflictstyle = diff3
tool = meld
[mergetool "meld"]
cmd = \"C:\\Program Files (x86)\\Meld\\Meld.exe\" --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"
Linux:
[merge]
conflictstyle = diff3
tool = meld
[mergetool "meld"]
cmd = meld --auto-merge $LOCAL $BASE $REMOTE --output=$MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE
Я считаю добавление
conflictstyle = diff3
изменяет встроенный текст, чтобы включить содержимое BASE в выходной файл до того, как к нему попадет meld, что может дать ему фору. Не уверена.
Теперь, поскольку я уже отмечал, что Meld поддерживает трехстороннее слияние, есть еще один вариант. Когда установлен стиль конфликта git "diff3", Meld печатает "(??)" в строке, показывающей содержимое из BASE. источник
Несколько функций командной строки, которые мне очень нравятся:
--auto-merge
отлично подходит для выбора того, что вам подходит (это не пуленепробиваемое устройство, но я считаю, что сэкономленное время стоит любого риска).Вы можете добавить дополнительные окна различий в той же команде. Например:
--diff $BASE $LOCAL --diff $BASE $REMOTE
добавит еще две вкладки с различиями локальных и входящих патчей. Их может быть очень полезно увидеть отдельно от трехстороннего обзора, чтобы увидеть отдельные различия из базы в каждой ветви. Однако я не мог заставить это работать с окнами.
Некоторые версии meld позволяют помечать вкладки
--label
. Это было более важно до того, как git исправил имена файлов, передаваемых в meld, чтобы включить local / base / remote.Получатель чего-то
--diff
может повлиять на порядок табуляции. У меня были проблемы с некоторыми старыми версиями, которые сначала ставили дополнительные различия, тогда как основной трехсторонний дифференциал используется гораздо чаще.
Добавление строк ниже в мой файл .gitconfig в C: \ Users \ username решило мою проблему для 3.20.3 в Windows 10.
[user]
name = doe
email = doe@john.com
[core]
longpaths = true
[diff]
tool = meld
[difftool "meld"]
path=C:/Program Files/Meld/Meld.exe
[difftool]
prompt = false
[merge]
tool = meld
[mergetool "meld"]
path=C:/Program Files/Meld/Meld.exe
[mergetool]
prompt = false
KeepBackup = false
Для окон добавьте путь для meld, как показано ниже:
git config --global mergetool.meld.path C:\\Meld_run\\Meld.exe
git config --global merge.tool meldgit config --global mergetool.meld.path c:/Progra~2/meld/Meld/