0

我已使用以下选项将我的 git 实例配置为使用 winmerge 作为比较工具:

git config --global merge.tool winmerge
git config --replace --global mergetool.winmerge.cmd "\"C:\Program Files (x86)\WinMerge\WinMergeU.exe\" -e -u -dl \"Base\" -dr \"Mine\" \"\$LOCAL\" \"\$REMOTE\""
git config --global mergetool.prompt false

当我在冲突文件上运行“git mergetool”时,我会看到带有冲突文件的 winmerge 窗口,并且我可以使用 winmerge 按照正常合并来解决冲突。

当我保存文件并由 git 提示回答合并是否成功时,我回答“y”,我想我已经完成了。

但是,当我查看新合并的文件时,我看到了 <<<<<<< HEAD 和 >>>>>>> 原点/主标记(当我保存最终合并文件时,这些不在 winmerge 窗口中)。我还在文件夹中看到了文件的 LOCAL.bak 和 REMOTE.bak 版本。

我以前从未在合并文件中留下 HEAD 和 origin 标记,也没有在合并后留下 LOCAL.bak 和 REMOTE.bak 文件。就好像它们是在我对成功的合并问题回答“y”后添加的,因为它们没有显示在 winmerge 窗口中。我是否缺少某种配置选项?我似乎无法找出为什么它正在做它正在做的事情。

4

2 回答 2

1

您错误地设置了 git mergetool。使用 winmerge 作为 difftool 和 mergetool的工作配置(发布在https://gist.github.com/shawndumas/6158524)是:

[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 $MERGED

[diff]
    tool = winmerge

[difftool "winmerge"]
    name = WinMerge
    trustExitCode = true
    cmd = "/c/Program\\ Files\\ \\(x86\\)/WinMerge/WinMergeU.exe" -u -e $LOCAL $REMOTE
于 2015-04-16T14:27:04.997 回答
0

.bak 文件由 WinMerge 在保存修改后的文件时创建。如果您查看 WinMerge 选项,您会看到默认设置是将这些备份文件(如果您愿意,它们是“更改前安全副本”)存储在与原始文件相同的文件夹中。您可以选择将它们存储在不同的文件夹中。

于 2015-09-15T16:30:02.357 回答