git merge显示成功,但HEAD和origin标记保留在文件中

时间:2015-04-15 19:03:53

标签: git merge winmerge

我已将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和原始标记,也没有在合并后留下LOCAL.bak和REMOTE.bak文件。它就像我回答了#34; y"成功的合并问题,因为它们没有显示在winmerge窗口中。我错过了某种配置选项吗?我似乎无法找出它为什么要做它正在做的事情。

2 个答案:

答案 0 :(得分:2)

你错误地设置了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

答案 1 :(得分:0)

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