在Git中查看和编辑合并的最佳工具是什么?我想要一个3路合并视图,“我的”,“他们的”和“祖先”在单独的面板,和第四个“输出”面板。

此外,调用该工具的指令也很好。(我仍然没有弄清楚如何以这样一种方式启动kdiff3,它不会给我一个错误。)

我的操作系统是Ubuntu。


当前回答

维姆迪夫

一旦你学会了vim(我认为你应该学会),vimdiff只是另一个需要学习的漂亮的小正交概念。要在vim中获得在线帮助:

:help vimdiff 

这个问题涵盖了如何使用它:我如何使用vimdiff来解决冲突?

如果您还停留在鼠标使用的黑暗时代,并且您要合并的文件不是很大,那么我建议您使用meld。

其他回答

IntelliJ IDEA有一个复杂的合并冲突解决工具与Resolve魔棒,这大大简化了合并:

漫射是我的最爱,当然我有偏见。:-)它非常容易使用:

$ diffuse "mine" "output" "theirs"

Diffuse是一个用Python编写的小而简单的文本合并工具。使用Diffuse,您可以轻松地合并、编辑和检查对代码的更改。Diffuse是免费软件。

如果你使用visual studio, Team Explorer内置工具是一个很好的工具来解决git合并冲突。

Meld是一个免费、开源、跨平台(UNIX/Linux、OSX、Windows)的差异/合并工具。

下面是如何安装它:

Ubuntu Mac Windows:“推荐的Meld Windows版本是最新的版本,可从https://meldmerge.org获得MSI。”

你可以配置你自己的合并工具来使用“git mergetool”。

例子:

  git config --global merge.tool p4merge
  git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
  git config --global mergetool.p4merge.trustExitCode false

当你这样做的时候,你也可以把它设置为“git difftool”的difftool:

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'

注意,在Unix/Linux中,你不希望$BASE被你的shell解析为一个变量——它实际上应该出现在~/中。Gitconfig文件来工作。