WinMerge difftool 仅在 AppData 临时文件中进行更改,而不在真实文件中进行更改

WinMerge difftool makes changes only in AppData temporary files but not in the real files

我将 WinMerge 与 git 集成为 difftool 和 mergetool。

问题是当我 运行: git difftool SomeBranch..HEAD 我打开 WinMerge 正确显示左侧和右侧窗格,但在解决差异后,我保存并退出但文件不受影响。 我注意到,当 WinMerge 打开时,我确实看到我的所有差异都是针对 AppData 中的临时文件完成的。这是上部差异窗格的样子(注意文件夹路径左侧和右侧都是 AppData):

我无法让 WinMerge 真正正确地打开 difftool 并让我 change/resolve 我的 diffs 并真正将更改保存到真实文件中 - 任何解决此问题的线索?

注意:当"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

OS: Windows 10

Git版本:2.24.1.windows.2

只有将提交与工作树文件进行比较,才能在工作树中编辑文件。当你 运行

git difftool SomeBranch

您将 SomeBranch 上的文件与工作树进行比较,然后您可以编辑工作树文件。

但是当你运行

git difftool SomeBranch..HEAD

你比较了两个提交。 git difftool 将它们视为与工作树无关,因此正如您所观察到的,您的所有编辑最终都在临时文件中。