WinMerge difftool вносит изменения только во временные файлы AppData, но не в реальные файлы.

У меня есть WinMerge, интегрированный с git в качестве инструмента сравнения и инструмента слияния.

Дело в том, что когда я работаю: git difftool SomeBranch..HEAD Я открываю WinMerge правильно, правильно отображая левую и правую боковые панели, но после разрешения различий я сохраняю и выхожу, но файлы не затрагиваются. Я заметил, что когда WinMerge открывается, я вижу, что все мои сравнения выполняются с временными файлами, которые находятся в AppData. Вот как выглядят верхние панели различий (обратите внимание, что пути к папкам — это AppData как для левой, так и для правой стороны):

введите здесь описание изображения

Я не могу заставить WinMerge действительно правильно открывать difftool и заставлять меня изменять/разрешать мои diff и действительно сохранять изменения в реальных файлах - Есть подсказки, как это исправить?

Примечание. При использовании "mergetool" эта проблема не возникает (только в difftool).

Примечание. При сопоставлении с изменениями в моем текущем каталоге следующим образом: git difftool - проблема не возникает (Winmerge представляет реальный файл на правой панели, а не временный файл)

Вот мои настройки файла .gitconfig:

[mergetool]
    prompt = false
    keepBackup = false
    keepTemporaries = false

[merge]
    tool = winmerge

[mergetool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e -dl \"Local\" -dr \"Remote\" $LOCAL $REMOTE

[diff]
    tool = winmerge

[difftool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE

Другие сведения:

Версия WinMerge: 2.16.6.0

ОС: Виндовс 10

Git-версия: 2.24.1.windows.2


person Mercury    schedule 22.03.2020    source источник


Ответы (1)


Редактирование файлов в рабочем дереве работает, только если вы сравниваете фиксацию с файлами рабочего дерева. Когда вы бежите

git difftool SomeBranch

вы сравниваете файлы на SomeBranch с рабочим деревом и можете редактировать файлы рабочего дерева.

Но когда вы бежите

git difftool SomeBranch..HEAD

вы сравниваете два коммита. git difftool рассматривает их как не связанные с рабочим деревом, поэтому все ваши правки, как вы заметили, попадают во временные файлы.

person j6t    schedule 22.03.2020