Подтвердить что ты не робот

Как использовать 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

Что я сделал неправильно в настройках?

4b9b3361

Ответ 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