Ответ 1
Почему вы не используете git bash для Windows?
После простой установки:
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here
Вот и все!
В Linux мой любимый инструмент слияния - Meld, и у меня не было проблем с его использованием или настройкой для работы с Git. Однако в Windows это была другая история.
Сначала я установил Meld из пакета, который я нашел здесь: https://code.google.com/p/meld-installer/
Затем я настроил свой .gitconfig так, чтобы поддерживать Meld в качестве стандартного mergetool
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
keepBackup = false
trustExitCode = false
Итак, когда у меня конфликт, я делаю git diffftool, а Meld действительно открыт. Однако пути к файлам, которые git пишет для перехода к инструменту diff, неверны. Например, хотя git генерирует файлы BASE, LOCAL и REMOTE в каталоге репозитория (местоположение, с которого я вызывал git mergetool from), Meld пытается открыть каждый из этих файлов в каталоге исполняемого файла.
Вместо открытия C:\repo\roses.txt.LOCAL.2760.txt, Meld пытается открыть C:\Program Files (x86)\Meld\meld\roses.txt.LOCAL.2760.txt.
Кто-нибудь сталкивался с этим раньше или знал, как настроить git/Meld правильно работать в Windows?
Почему вы не используете git bash для Windows?
После простой установки:
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here
Вот и все!
Шуесс, будь осторожен с космическим персонажем в каталогах!
[merge]
tool = meld
[mergetool "meld"]
prompt = false
keepBackup = false
keepTemporaries = false
path = C:/Program Files (x86)/Meld/meld.exe
cmd = '\"/c/Program Files (x86)/Meld/meld.exe\" $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED'
У меня была одна и та же проблема, и я обнаружил, что мне пришлось переработать мой способ заставить ее работать. Вот что я вложил в файл .gitconfig. (Обратите внимание, что мой исполняемый файл meld находится в другом месте)
[merge]
tool = meld
[mergetool "meld"]
cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"
Я нашел решение в отчете об ошибке для установщика meld на этой странице:
https://code.google.com/p/meld-installer/issues/detail?id=11
Насколько я понимаю, проблема в том, что программа meld.exe(которая запускается через интерпретатор python) бесполезно устанавливает рабочую директорию команды в команду meld.exe. Это приводит к неправильному интерпретации относительных путей при передаче в качестве аргументов командной строки.
Решение заключается в замене предоставленного файла meld.exe на один, сгенерированный путем компиляции файла meld.ahk, используя AHK2EXe (AutoHotKey script → exe). Просто загрузите script дальше по странице, так как там было несколько версий.
Вы можете использовать эти две команды (как говорит Аругин) --using правильный путь к Meld.exe:
git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"
ИЛИ вы можете просто отредактировать файл C:\Users\YOUR_USER_NAME\.gitconfig
напрямую и добавить в его конец следующее:
[merge]
tool = meld
[mergetool "meld"]
path = C:\\Program Files (x86)\\Meld\\Meld.exe
Теперь вызовите git difftool
в Git Bash для Windows, и Meld откроется в качестве программы просмотра difftool по умолчанию.
ОБНОВЛЕНИЕ 20 сентября 2019 года:
- Я мог бы также поместить здесь версию Linux для моей собственной справки в одном месте, если ничего больше:
Для Linux это тоже очень просто:
sudo apt update
sudo apt install meld
gedit ~/.gitconfig # edit your ~/.gitconfig file (gedit GUI editor will open)
Затем добавьте в конец файла .gitconfig:
[diff]
tool = meld
Вот оно! git difftool
теперь работает на Linux Ubuntu!
Я тоже сталкивался с подобной проблемой. Используемая операционная система - это Windows 10, и для меня работали следующие изменения. Это похоже на проблему с пути
git config --global mergetool.meld.path "/c/Program Files (x86)/Meld/Meld.exe" <- path to meld here
Ни один из ответов не сработал для меня. Я закончил с этим в .gitconfig файле:
[merge]
tool = meld
[mergetool "meld"]
cmd = 'C:/Program Files (x86)/Meld/Meld.exe' $LOCAL $BASE $REMOTE --output=$MERGED
[mergetool]
prompt = false
После того, как git merge mybranch
заканчивается конфликтами, вы просто git merge mybranch
git mergetool
и открывается meld. После сохранения вы должны выполнить коммит в git и конфликты будут разрешены.
По некоторым причинам, это работало только с Meld 3.18.x, Meld 3.20.x выдает мне ошибку.
По какой-то причине в Windows 10 переменная окружения PATH не может быть правильно установлена во время установки, поэтому возникает странное исключение, говорящее о том, что она не может найти некоторые .dll, которые находятся в "C:\Program Files (x86)/Meld/bin "каталог.
Обходной путь для меня был, выполнить в git bash:
export PATH=$PATH:"/C/Program Files (x86)/Meld/lib"
Или добавить в Windows PATH
C:\Program Files (x86)/Meld/bin
После того, как все это было указано выше, установка Meld для запуска с правами администратора работала для меня.
Run this program as an administrator
Ошибки, которые я получил, ссылались на временные файлы типа c:\windows\temp\meld-*
, которые не создавались. Поднятие разрешений Meld, похоже, делает трюк, поскольку теперь он работает с обоими git difftool
и работает вручную в Meld.