Git最好的可视化合并工具是什么?

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

此外,调用该工具的说明将是伟大的。(我仍然没有弄清楚如何以不给我错误的方式启动kdiv3。)

我的操作系统是Ubuntu。

526032 次浏览

我最喜欢的可视化合并工具是SourceGear DiffMerge

  • 它是免费的。
  • 跨平台(Windows、OS X和Linux)。
  • 干净的视觉UI
  • 您期望的所有diff功能(Diff、Merge、Folder Diff)。
  • 命令行界面。
  • 可用的键盘快捷键。

用户界面

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

以下是如何安装它:

我听到了关于KDiF3的好消息。

如果你只是在寻找一个超越比较的差异工具是非常好的:http://www.scootersoftware.com/moreinfo.php

您可以通过传递git mergetool -t=<tool>--tool=<tool>来更改git mergetool使用的工具。要更改默认值(来自vimdiff),请使用git config merge.tool <tool>

弥漫是我最喜欢的,但当然我有偏见。:-)它很容易使用:

$ diffuse "mine" "output" "theirs"

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

gitxhttp://gitx.frim.nl/

使用大型提交集时存在一些错误,但非常适合浏览更改并选择不同的更改进行阶段然后提交。

您可以尝试P4Merge

使用P4Merge可视化文件版本之间的差异。通过颜色编码解决由并行或并发开发引起的冲突。

其特点包括:

  • 突出显示和编辑文本文件的差异
  • 选择包含或忽略行尾或空格
  • 识别Windows(CRLF)、Mac(CR)和Unix(LF)的行尾约定
  • 使用命令行参数并从非Perforce应用程序启动
  • 比较和合并文件时显示行号
  • 排除已修改、唯一或未更改的文件
  • 按名称或扩展名过滤文件
  • 在熟悉的文件/文件夹层次结构中组织修改的资产
  • 比较JPEG、GIF、TIFF、BMP和其他文件格式
  • 使用Qt API进行扩展
  • 叠加图像或并排显示
  • 突出显示重叠图像上的差异

您可以配置自己的合并工具以与“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”的扩散工具:

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

请注意,在Unix/Linux中,您不希望$BASE被shell解析为变量-它实际上应该出现在您的~/. gitconfig文件中才能正常工作。

Araxis Mergehttp://www.araxis.com/merge 我在Mac OS X上使用它,但我在Windows上使用过它……它不是免费的……但它有一些漂亮的功能……虽然在Windows上更好。

您可以在Linux、Mac或Windows上安装ECMerge差异/合并工具。它已在Git中预先配置,因此只需使用git mergetool即可。

Beyond Compare 3,我最喜欢的,在专业版中有合并功能。它合并的好处是它可以让你看到所有4个视图:基视图、左视图、右视图和合并的结果。它比P4V视觉效果差一些,但比WinDiff视觉效果好得多。它集成了许多源代码控制,适用于Windows/Linux。它有许多功能,如高级规则、版本、手动对齐…

Perforce可视化客户端(P4V是一个免费工具,它提供了最明确的合并界面之一(参见一些截图)。适用于所有主要平台。我对该工具的主要失望是它的只读接口。您无法手动编辑文件,也无法手动对齐。

PS:P4Merge包含在P4V中。Perforce试图在没有客户端的情况下获得他们的工具有点困难。

SourceGear差异/合并可能是我的第二个免费工具选择。检查合并截屏,你会看到它至少有3个视图。


混合是一个更新的免费工具,我更喜欢SourceGear差异/合并:现在它也可以在大多数平台(Windows/Linux /Mac)上运行,具有原生支持一些源代码控制(如git)的明显优势。所以你可以对所有文件进行一些历史差异,这要简单得多。合并视图(参见截图)只有3个窗格,就像SourceGear差异/合并一样。这使得在复杂情况下合并有点困难。

PS:如果有一天一个工具支持5视图合并,这真的很棒,因为如果你在Git中选择提交,你真的不是一个基础而是两个。两个基础,两个更改,一个结果合并。

vimdiff

一旦您学习了vim(恕我直言,您应该学习),vimdiff只是一个更漂亮的正交概念。要在vim中获得在线帮助:

:help vimdiff

这个问题包括如何使用它:如何使用vimdiff解决冲突?

输入图片描述

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

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

来源:https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

如果您使用视觉工作室,Team Explorer内置工具是解决git合并冲突的非常好的工具。

所以对于git合并,你可以尝试:

  • DiffMerge直观地比较和合并Windows,OS X和Linux上的文件。

    DiffMerge

  • Meld是一个可视化的差异和合并工具。

    Meld是一个可视化的差异和合并工具

  • KDiff3,一个差异和合并程序),它比较或合并2或3个文本输入文件/目录。
  • opendiff(macOS上Xcode工具的一部分),一个命令行实用程序,它从终端启动FileMerge应用程序以图形方式比较文件或目录,包括合并

我已经尝试了很多这里提到的工具,没有一个是我想要的。

就个人而言,我发现Atom是可视化差异和冲突解决/合并的绝佳工具。

至于合并,没有三个视图,但它们都组合成一个视图,每个版本都有彩色突出显示。您可以直接编辑代码,或者有按钮可以使用您想要的任何版本的代码片段。

我甚至不再将它用作编辑器或IDE,只是为了使用git。干净的UI和非常直接的,加上它是高度可定制的。

  • 您可以从命令行启动它并传入您想要的单个文件 打开或添加您的项目文件夹(git repo)。

    • 我还推荐项目负责人作为一种非常方便的方式 在不填满树视图的情况下在项目之间导航。
  • 我遇到的唯一问题是刷新-当使用大型存储库时,atom更新您在它之外所做的更改可能会很慢。我总是在完成后关闭它,然后当我想再次查看我的更改/提交时重新打开。您还可以使用ctrl+Shift+f5重新加载窗口,这只需要一秒钟。

当然,它是免费的。

我使用不同的工具进行合并和比较:

git config --global diff.tool diffuse
git config --global merge.tool kdiff3

第一个可以被称为:

git difftool [BRANCH] -- [FILE or DIR]

当您使用git mergetool时调用第二个。