3

在安装KDiff3用于管理冲突后git,默认的仍然为我打开:

在此处输入图像描述

这是此答案中提到的配置:

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
4

2 回答 2

3

最后我提出了另一个解决方案!我用meld而不是kdiff3. 首先从这里下载融合。然后更改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

注意:尝试使用 gitcmd而不是 windows cmd。当你有冲突时,只需运行 : git mergetool。有关更多详细信息和示例,请参见此处

于 2017-03-06T12:20:42.340 回答
1

我不知道kdiff3,但您可能需要将要比较的文件作为参数添加到您的工具调用中(请参阅此处KDiff3 调用的命令行选项)。在您的全局配置中(可通过 访问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"变量的顺序,但这篇文章将提供足够的更多信息。虽然它是关于 Meld 工具的,但我很确定处理是类比的,并且有一些非常好的和信息丰富的答案。

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

[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"变量的顺序或删除其中一个。您可以在上面提供的链接中找到足够的信息。

于 2017-03-06T06:17:54.210 回答