git - 将KDiff3设置为默认的mergetool

时间:2017-03-05 17:43:35

标签: git kdiff3 mergetool git-difftool

安装KDiff3以管理git中的冲突后,仍默认为我开放:

enter image description here

以下是此answer中提到的配置:

git config --global --add merge.tool kdiff3
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add mergetool.kdiff3.trustExitCode false

git config --global --add diff.guitool kdiff3
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe"
git config --global --add difftool.kdiff3.trustExitCode false

注意:我可以使用简单文件单独运行KDiff3,但我无法在我的git项目中运行它。有什么想法吗?

编辑:这是我的.gitconfig:

[user]
    email = vahid.vdn@gmail.com
    name = vahid najafi
[diff]
    tool = kdiff3
    guitool = kdiff3
[merge]
    tool = diffmerge
    tool = kdiff3
    tool = kdiff3
[mergetool "diffmerge"]
    trustExitCode = true
[mergetool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    trustExitCode = false
[difftool "kdiff3"]
    path = C:/Program Files/KDiff3/kdiff3.exe
    trustExitCode = false

2 个答案:

答案 0 :(得分:2)

最后我做了另一个解决方案!我使用meld代替kdiff3。首先从meld下载here。然后在c:/Users/yourName/.gitconfig中更改meld的配置:

[user]
    email = vahid.vdn@gmail.com
    name = vahid najafi
[diff]
    tool = meld
[difftool "meld"]
    path = C:/Program Files (x86)/Meld/meld/meld.exe
[difftool]
    prompt = false
[merge]
    tool = meld
[mergetool "meld"]
    path = C:/Program Files (x86)/Meld/meld/meld.exe
[mergetool]
    keepBackup = false

注意:尝试使用git cmd代替windows cmd。如果您遇到冲突,请运行:git mergetool。有关更多详细信息和示例,请参阅here

答案 1 :(得分:1)

我不知道kdiff3,但您可能需要将要比较的文件作为参数添加到工具调用中(请参阅KDiff3调用here的命令行选项)。在您的全局配置中(可通过git config --global -e访问),相应的行应如下所示:

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    trustExitCode = false
    cmd = 'C:/Program Files/KDiff3/kdiff3.exe' "$LOCAL" "$BASE" "$REMOTE" "$MERGED"

由于我没有尝试使用KDiff3,您可能需要切换"$LOCAL" "$BASE" "$REMOTE""$MERGED"变量的顺序,但this帖子应提供足够的更多信息。虽然它是关于Meld工具的,但我非常确定这种处理是类比的,并且有一些非常好的和信息丰富的答案。

编辑: 假设您使用Windows:您可以在Windows资源管理器中找到它,通常在c:\user\yourusername\.gitconfig中,并使用任何编辑器打开它。在Linux中,请参阅this post。然后,使用以下内容替换所有mergemergetooldifftool部分:

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
    trustExitCode = false
[difftool "kdiff3"]
    cmd = "C:/Program Files/KDiff3/kdiff3.exe" "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
    trustExitCode = false

如果ot不起作用,您可能需要更改"$LOCAL" "$BASE" "$REMOTE""$MERGED"变量的顺序或删除其中一个变量。您可以在上面提供的链接中找到有关此内容的充分信息。