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

时间:2008-09-26 00:27:36

标签: git version-control merge

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

此外,调用所述工具的说明也很棒。 (我仍然没有弄清楚如何以一种不会给我错误的方式启动kdiff3。)

我的操作系统是Ubuntu。

18 个答案:

答案 0 :(得分:312)

Meld是差异/合并工具。

以下是如何安装它:

答案 1 :(得分:84)

您可以将自己的合并工具配置为与“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中,您不希望shell将$BASE解析为变量 - 它实际上应该出现在〜/ .gitconfig文件中,以便它可以工作。

答案 2 :(得分:61)

我最喜欢的

Beyond Compare 3专业版中具有merge功能。合并的好处是它可以让你看到所有4个视图:base,left,right和merged result。它比 P4V 更不直观,但比WinDiff更多。它integrates with many source control并适用于Windows / Linux。它有许多功能,如高级规则,版本,手动对齐......

The Perforce Visual Client (P4V)是一个免费工具,它提供了一个最明确的合并界面(参见some screenshots)。适用于所有主要平台。我对该工具的主要不满是它的“只读”界面。您无法手动编辑文件,也无法手动对齐。

PS:P4Merge包含在P4V中。 Perforce试图让没有客户的工具变得有点困难。

SourceGear Diff/Merge可能是我的第二个免费工具选择。检查合并screens-shot,你会发现它至少有3个视图。


Meld 是一个较新的免费工具,我更喜欢 SourceGear Diff / Merge :现在它也适用于大多数平台(Windows / Linux / Mac)具有本机支持某些源控件(如 Git )的独特优势。因此,您可以在所有文件上使用更简单的历史差异。合并视图(请参阅screenshot)只有3个窗格,就像 SourceGear Diff / Merge 一样。这使得在复杂情况下合并更加困难。

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

答案 3 :(得分:42)

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

  • 免费。
  • 跨平台(Windows,OS X和Linux)。
  • 清洁可视化用户界面
  • 您期望的所有差异功能(差异,合并,文件夹差异)。
  • 命令行界面。
  • 可用的键盘快捷键。

User interface

答案 4 :(得分:35)

我听到有关kdiff3的好消息。

答案 5 :(得分:23)

vimdiff同时

一旦你学会了vim(和你应该的恕我直言),vimdiff只是一个更美丽的小正交概念。要获得vim的在线帮助:

:help vimdiff

如果你在鼠标使用的黑暗时代陷入困境,并且你正在合并的文件不是很大,我推荐meld。

答案 6 :(得分:22)

您可以尝试P4Merge

  

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

这些功能包括:

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

答案 7 :(得分:15)

Diffuse是我的最爱,但我当然有偏见。 :-)它很容易使用:

$ diffuse "mine" "output" "theirs"
  

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

答案 8 :(得分:13)

IntelliJ IDEA 有一个复杂的merge conflict resolution tool,带有Resolve魔棒,极大地简化了合并:

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

答案 9 :(得分:12)

Araxis Merge http://www.araxis.com/merge 我在Mac OS X上使用它,但我在Windows上使用它...它不是免费的......但它在Windows上有一些nice features ...更好。

答案 10 :(得分:7)

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

答案 11 :(得分:7)

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

答案 12 :(得分:2)

我已经尝试了很多这里提到的工具,但我们都没有找到我想要的工具。

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

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

我甚至不再使用它作为编辑器或IDE,只是为了使用git。清洁用户界面,非常简单,而且可以高度自定义。

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

    • 我还建议project-manager作为一种非常方便的方法 在不填满树视图的情况下在项目之间导航。
  • 我唯一遇到的问题是刷新 - 当处理大型存储库时,原子可能很慢,无法更新您在其外部所做的更改。我只是在我结束时总是关闭它,然后当我想再次查看我的更改/提交时重新打开它。您也可以使用ctrl + shift + f5重新加载窗口,这只需要一秒钟。

它当然是免费的。

答案 13 :(得分:1)

您可以在Linux,Mac或Windows上安装ECMerge diff/merge tool。它是在Git中预先配置的,因此只需使用git mergetool即可完成任务。

答案 14 :(得分:1)

因此,对于git merge,您可以尝试:

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

    DiffMerge

  • Meld,是一个视觉差异和合并工具。

    Meld is a visual diff and merge tool

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

答案 15 :(得分:1)

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

int[] sqlTypes() {
    [BigDecimalType.INSTANCE.sqlType(), StringType.INSTANCE.sqlType()]
}

拳头可以通过以下方式调用:

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

使用git difftool [BRANCH] -- [FILE or DIR] 时会调用第二个。

答案 16 :(得分:0)

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

答案 17 :(得分:-1)

gitx http://gitx.frim.nl/

使用大型提交集时会出现一些错误,但非常适合浏览更改并选择不同的更改到舞台然后提交。