我有冲突,所以我输入:
git mergetool
然后我收到一条消息说:
点击返回以启动合并解析工具
通常当我这样做时,它会打开kdiff3,这样我就可以合并差异了。
现在,当我这样做时,它只会继续到下一个文件,并且kdiff3根本不会打开。
我把我的git配置和我的系统路径三合一,看起来都很完美。配置文件如下:
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[diff]
guitool = kdiff3
[difftool "kdiff3"]
path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[core]
editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor autocrlf = true
[user]
name = James Farrell
email = info@jamespfarrell.com
[github]
user = whygosystems
token = 87d00c2e613b3a7c8c1be817b75b8a33
[diff]
external = C:/Program Files (x86)/Git/cmd/git-diff-wrapper.sh
任何人都有任何想法可能出错?
我有一种感觉(虽然我可能错了,这是一个问题,因为我安装了新的Github Windows客户端)....
答案 0 :(得分:21)
我意识到这是旧的,但对于未来的googlers,KDiff3也有一个选项,如果合并是微不足道的,它将默默地解决它,甚至从不显示窗口。
过去我曾经遇到过这种情况,所以它可能正在发生在你身上。我认为该选项被称为“自动保存并退出合并而不会发生冲突”。
答案 1 :(得分:5)
我暂时没有在Windows上使用git用于此目的,但是你的配置文件显示了一些有趣的差异:程序字符串。
[core]
editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor autocrlf = true
VS
[difftool "kdiff3"]
path = c:/Program Files (x86)/KDiff3/kdiff3.exe
我怀疑程序名称中的空格可能存在一些问题。尝试将diff / mergetool可执行路径设置为:
path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\"
答案 2 :(得分:2)
再次,对于未来的Google员工:
从版本2.48.02(2014年11月29日)开始,Git Extensions开始分发64位版本的kdiff3。 (见https://github.com/gitextensions/gitextensions/blob/master/GitUI/Resources/ChangeLog.md#version-24802-29-november-2014。)
因此,如果您运行的是32位操作系统并且安装了Gd Extensions安装程序kdiff3,那么您的kdiff3甚至不会自行运行。解决方案是下载32位版本(http://sourceforge.net/projects/kdiff3/files/kdiff3/)并重新安装。我甚至不需要先卸载64位版本,因为安装程序只是覆盖了以前的安装。
答案 3 :(得分:0)
Yet another answer for future Googlers:
Actually, no external merge tool will start. An issue was filed in August 2015: https://jira.atlassian.com/browse/SRCTREEWIN-3543
答案 4 :(得分:0)
Git已将--auto
硬编码为KDiff3的命令行选项,这会导致如果KDiff3可以自动解决所有冲突,则GUI无法显示。
我们可以通过以下方式更改此默认行为:
git config --global mergetool.kdiff3NoAuto.cmd "/c/Program Files/KDiff3/kdiff3.exe --L1 \"\$MERGED (Base)\" --L2 \"\$MERGED (Local)\" --L3 \"\$MERGED (Remote)\" -o \"\$MERGED\" \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\""
这将生成~/.gitconfig
文件(或者您可以直接修改文件):
[merge]
tool = kdiff3
[mergetool "kdiff3"]
path = C:/Program Files/KDiff3/kdiff3.exe
trustExitCode = false
cmd = /c/Program Files/KDiff3/kdiff3.exe --L1 \"$MERGED (Base)\" --L2 \"$MERGED (Local)\" --L3 \"$MERGED (Remote)\" -o \"$MERGED\" \"$BASE\" \"$LOCAL\" \"$REMOTE\"
[diff]
guitool = kdiff3
[difftool "kdiff3"]
path = C:/Program Files/KDiff3/kdiff3.exe
trustExitCode = false
这样,无论是否仍然存在未解决的冲突,kdiff3都会一直打开。