git - 将KDiff3设置为默认的合并工具

12 浏览
0 Comments

git - 将KDiff3设置为默认的合并工具

安装了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

0
0 Comments

问题出现的原因是在git中将KDiff3设置为默认的合并工具时出现了问题。解决方法是在全局配置文件中添加相应的配置信息。

首先,通过命令行选项将要比较的文件作为参数添加到工具调用中。在全局配置文件中的相应行应该如下所示:

[merge]

tool = kdiff3

[mergetool "kdiff3"]

trustExitCode = false

cmd = 'C:/Program Files/KDiff3/kdiff3.exe' "$LOCAL" "$BASE" "$REMOTE" "$MERGED"

如果在KDiff3中尝试后发现顺序不正确,可以查看这篇文章(链接:https://stackoverflow.com/questions/11133290)获取更多信息。虽然文章中是关于Meld工具的,但我相信处理方式是类似的,里面有一些非常好的和有信息量的答案。

假设你使用的是Windows系统:你可以在Windows资源管理器中找到它,通常在`c:\user\yourusername\.gitconfig`,然后用任何编辑器打开它。在Linux中,参见这篇文章(链接:https://stackoverflow.com/questions/12254076)。然后,将所有的`merge`、`mergetool`和`difftool`部分替换为以下内容:

[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

如果不起作用,有可能需要更改`"$LOCAL" "$BASE" "$REMOTE"`和`"$MERGED"`变量的顺序或删除其中之一。你可以在上面提供的链接中找到足够的信息。

谢谢。我运行了`git config --global -e`,但是这部分不存在:`"$LOCAL" "$BASE" "$REMOTE" "$MERGED"`。

是的,我也预料到了。你应该添加它以确保使用正确的文件调用KDiff3。

我应该如何添加?因为我对这个还不太了解。

你可以在命令行中运行`git config --global difftool.kdiff3.cmd"C:/Program Files/KDiff3/kdiff3.exe" "$LOCAL" "$BASE" "$REMOTE" "$MERGED"`,将该值设置在你的配置文件中,或直接编辑整个配置文件。`git config --global -e`会用默认编辑器打开配置文件(在使用git for windows时,这将是`vim`)。我建议直接编辑整个文件,这样你可以确保没有残留的命令行编辑。

我运行了你提到的命令,但是什么都没有改变。我在问题中添加了我的`.gitconfig`文件。我该如何手动添加?

现在我收到这个错误:/mingw64/libexec/git-core/git-mergetool--lib: line 124: C:/Program: No such file or directory fatal: external diff died, stopping at index.php

我甚至安装了`meld`。当运行`git difftool origin/master`时它工作得很好,但是当再次运行`git mergetool`时,它会导致默认的合并工具在命令行中打开。

我之前在Windows的命令提示符中工作。所以我切换到git的命令提示符中。这解决了`meld`的问题。不管怎样,感谢你的关注。

0
0 Comments

在这段内容中,作者提到了解决将KDiff3设置为默认合并工具的问题,他们采用了使用meld替代KDiff3的解决方案。他们首先从这里下载了meld,然后在c:/Users/yourName/.gitconfig中更改了meld的配置。他们添加了以下配置:

[user]

email = vahid.vdn.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的命令提示符(git cmd)而不是Windows的命令提示符(cmd)。当出现冲突时,只需运行git mergetool命令。更多细节和示例可以在这里找到。

根据这些信息,我们可以总结出问题的原因是作者想要将KDiff3设置为默认的合并工具,但遇到了问题。解决方法是使用meld替代KDiff3,并进行相关配置。

0