Как установить 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/

Другие вопросы по тегам