为什么Git Mergetool会显示“无需合并文件”?

4

我正在尝试将BeyondCompare4配置为我的git difftool和mergetool。我使用的是git版本2.5.0.windows.1。到目前为止,BeyondCompare4作为difftool运行良好,但作为mergetool则不行。

从我的master分支中,我运行git mergetool branch3,它会回复没有需要合并的文件

但是,当我运行git diff branch3时,我可以看到一个文件中有几种类型的差异(通常在同一行上)。如果我只运行git merge branch3,它会开始合并过程并停在CONFLICT处。那么为什么git mergetool不能像这样为我工作呢?

这个链接建议使用git config --global core.trustctime false,但我尝试了也无济于事:git mergetool报告“没有需要合并的文件”

这个链接建议rerere可能有问题,所以我尝试了git config --global rerere.enabled false,但也没有成功:git告诉我有合并冲突,但也告诉我没有需要合并的文件

这是我的.gitconfig文件的内容:

[diff]
    tool = bc
[difftool]


    prompt = false
[difftool "bc"]
    trustExitCode = true
    cmd = 'c:/program files (x86)/beyond compare 4/bcomp.exe' $LOCAL $REMOTE


[merge]
    tool = bc
[mergetool]
     prompt = false
[mergetool "bc"]
    trustExitCode = true
    cmd = 'c:/program files (x86)/beyond compare 4/bcomp.exe' $LOCAL $REMOTE $BASE $MERGED

我甚至尝试修改.gitconfig,将bcomp4.exe的路径更改为虚假路径,只是想看看是否会出错。如果我更改difftool,则会出现找不到路径的错误。但是,如果我在mergetool上进行更改,它仅会持续显示“没有需要合并的文件”,这导致我认为BeyondCompare4甚至没有运行。
感谢任何关于为什么git mergetool会提前停止并显示该消息的想法。

"git status" 显示什么? - eckes
如果您启用了rerere,那么它可能是rereremergetool之间某种错误。我已经成功地使用了以下解决方法:git mergetool . - 注意末尾的额外句点! - Mikko Rantalainen
1个回答

5

当您处于需要解决冲突的状态时,即在合并结果导致冲突后,您应该使用git mergetool

git checkout master
git merge branch3
# the merge reports conflicts which we need to resolve
git mergetool
git add -u
git commit -m "a merge commit message"

更多关于使用meregetool解决冲突的信息可以在https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging#Basic-Merge-Conflicts找到。请参考git help mergetool获取选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接