WinMerge difftool вносит изменения только во временные файлы AppData, но не в реальные файлы - PullRequest
0 голосов
/ 22 марта 2020

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

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

enter image description here

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

Примечание: Когда «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

ОС: Windows 10

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

1 Ответ

1 голос
/ 22 марта 2020

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

git difftool SomeBranch

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

Но когда вы запускаете

git difftool SomeBranch..HEAD

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

...