git difftool Beyond Compare 4 не отличается локально от удаленного

Я использую CYGWIN и Beyond Compare 4 Pro Edition. Я установил следующий файл .gitconfig:

[diff]
    tool = bc3
[difftool "bc3"]
    path = c:/program files/beyond compare 4/bcomp.exe
[merge]
    tool = bc3
[mergetool "bc3"]
    path = c:/program files/beyond compare 4/bcomp.exe

Сделав небольшое изменение в локальном файле, я запускаю в CYGWIN следующую команду:

git difftool

Beyond Compare 4 запускается правильно, но только с левой стороной, полностью красной. Правая сторона пуста.

Я бы хотел, чтобы это запускалось простым сравнением моих локальных изменений (слева) с удаленными (справа).

Я предполагал, что это поведение по умолчанию? Есть ли еще одна настройка, которую мне не хватает, или она доступна только


person jipot    schedule 27.04.2017    source источник


Ответы (3)


Перечисленная вами конфигурация должна правильно работать с Git для Windows 2.12.1.windows.1 в командной строке Windows. Я не тестировал его с Cygwin.

Если вы используете версию Git, предоставленную Cygwin, может помочь переключиться на версию Git для Windows с https://git-scm.com/ вместо этого. В прошлом версия Git для Cygwin значительно отставала от официальной версии для Windows. Чтобы проверить свою версию Git, запустите «git --version».

person Chris Kennedy    schedule 28.04.2017

Я смог решить свою проблему, настроив файл .gitconfig следующим образом:

[difftool "bc3"]
     cmd = \"c:/program files/beyond compare 4/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"

Это вызывает разницу между локальным и удаленным при выполнении git difftool

person jipot    schedule 01.05.2017

Мне пришлось изменить ответ jipot выше:

git config --system difftool.bc.cmd '"c:/program files/beyond compare 4/bcomp.exe" "$(cygpath -w $LOCAL)" "$(cygpath -w $REMOTE)"'

Идем дальше, аналогично для mergetool:

git config --system mergetool.bc.cmd '"c:/program files/beyond compare 4/bcomp.exe" "$(cygpath -w $LOCAL)" "$(cygpath -w $REMOTE)" "$(cygpath -w $BASE)" "$(cygpath -w $MERGED)"'

Что касается core.editor, если вы хотите использовать Sublime Text, вам нужно использовать внешний скрипт ~/git-editor.sh, который содержит следующую команду:

cygpath --windows $@ | sed 's/\\/\\\\/g' | tr '\n' '\0' | xargs -0 -n1 /cygdrive/c/Program\ Files/Sublime\ Text\ 3/subl.exe -n -w

Я изменил приведенное выше из сообщения Александра Рево.

Затем добавьте его в конфигурацию git core.editor:

git config --system core.editor "~/git-editor.sh"

Если вы не используете внешний скрипт для редактора, git заставит Sublime text открыть два файла, если вы попытаетесь поместить $cygpath в конфигурацию core.editor, поскольку git добавит имя файла «неправильный путь» в конец вашей настройки core.editor.

person kamion    schedule 04.06.2020