Как использовать Meld как инструмент слияния с SourceTree в Windows?
В моем файле .gitconfig
есть следующее:
[user]
name = myname
email = [email protected]
[core]
autocrlf = true
excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
tool = meld
[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
prompt = false
[merge]
tool = meld
[mergetool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
trustExitCode = true
И в sourcetree у меня есть следующие настройки:
![enter image description here]()
Однако, когда я щелкнул правой кнопкой мыши файл на sourcetree, чтобы выполнить внешний diff, мне удалось открыть meld, но содержимое файла вообще не отображалось.
![enter image description here]()
Что я сделал неправильно в настройках?
Ответы
Ответ 1
Фактическая настройка, используемая здесь для того, чтобы иметь реальное трехстороннее слияние, только с вкладками THEIRS и MINE только для чтения:
$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
Обратите внимание на =
после --output
.
Я, наконец, получил эту команду, копаясь в комментариях к второму ответу на этот вопрос Git слияние с помощью Meld.
Ответ 2
Я считаю, что существующие ответы не так актуальны для вопроса. Вот моя собственная пища для собак.
![введите описание изображения здесь]()
Аргументы:
Diff: $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
Для External Diff
вам нужно удалить $BASE из списка аргументов
Если вам нужно 3-стороннее слияние, вам нужно нажать на опцию External Merge Tool
, которая доступна только при наличии неразрешенного конфликта.
![Контекстное меню внешнего инструмента слияния]()
Обновление: Если вы не ограничены в SourceTree + Meld, я обнаружил, что Git Расширения + KDiff3 также может быть вашим вниманием.
Ответ 3
Для OS X он выглядит следующим образом:
-
Команда Diff: meld
.
- Аргументы:
@LOCAL @REMOTE
-
Команда слияния: meld
.
- Аргументы:
$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
P.S.
Чтобы использовать его из командной строки, вы должны установить его с помощью brew:
brew install meld
![введите описание изображения здесь]()
Ответ 4
Если вы не хотите изменять переменную среды PATH, вы можете использовать короткие имена, совместимые с DOS:
C:\Progra~1 = C:\Program Files
C:\Progra~2 = C:\Program Files (x86)
Это позволяет избежать проблемных пространств в пути и отлично работает с SourceTree. Он взламывает, но он работает. Затем вы можете использовать что-то вроде этого в качестве пути к Meld:
C:\Progra~1\Meld\meld.exe
Не может быть гарантировано, что Progra ~ 1 отображает 64-разрядный каталог, поэтому вам может потребоваться поэкспериментировать с какой-либо картиной.
Ответ 5
Попробуйте добавить расположение файла meld.exe в PATH (например, C:\Program Files (x86)\Meld), а затем в Diff Command просто введите meld вместо полного пути. См. Здесь: https://gist.github.com/chinhodado/6fc37def3e12ea09f785