14

是否可以设置 Git 以便我可以在 KDiff3 中使用三向比较?

我有两个完全不同的分支,无法自动合并它们,我只需要检查每个合并点,我认为最好的方法是检查我想要来自另一个分支的更改的分支并说

git difftool HEAD_OF_OTHER_BRANCH -- .

然后在 KDiff3 中选择合并文件。在浏览完文件后,我将提交。

我已将 merge.conflictstyle 和 diff.conflictstyle 设置为 diff3,但 KDiff3 仍然以双向 diff 开始。这可能吗?我猜如果 Git 也将共同祖先的哈希作为参数发送,这是可能的,但是是吗?

关于如何使用 SVN 和 BC3 执行此操作的讨论,但我找不到 Git 和 KDiff3 的任何内容。

4

2 回答 2

9

在命令行上运行:

git config --global mergetool.kdiff3.path /path/for/your/kdiff3/binary  

然后,在解决冲突时,您只需:

git mergetool --tool=kdiff3
于 2012-03-05T18:20:40.193 回答
3

似乎 git diff 只做一个 2-way diff(这对生成补丁等有意义),除了在合并状态下,你必须为此进行合并。前几天我也遇到了类似的情况,我最终使用该ours策略进行了合并。这有效,但并不理想。也许我们需要一个不尝试解决任何冲突的“非解决”合并策略。您可以通过调整 .git/MERGE_* 文件并将所有文件设置为冲突来模拟这一点。
否则,显而易见的解决方案是签出 3 个不同的目录并运行 kdiff3 ,但我猜您正在寻找更优雅的解决方案

于 2010-09-03T13:40:29.683 回答