662

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

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

我的操作系统是 Ubuntu。

4

18 回答 18

384

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

以下是如何安装它:

于 2008-09-26T00:39:54.497 回答
99

您可以配置自己的合并工具以与“ 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 文件中以使其正常工作。

于 2010-02-10T09:55:12.797 回答
69

我最喜欢的Beyond Compare 3在Pro 版中具有合并功能。合并的好处是它可以让您看到所有 4 个视图:基本视图、左视图、右视图和合并结果。它的视觉效果不如P4V,但比WinDiff多。它集成了许多源代码控制并在 Windows/Linux 上运行。它具有许多功能,例如高级规则、版本、手动对齐...

Perforce Visual Client ( P4V )是一个免费工具,它提供了最明确的合并界面之一(请参阅一些屏幕截图)。适用于所有主要平台。我对该工具的主要失望在于它的“只读”界面。您无法手动编辑文件,也无法手动对齐。

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

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


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

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

于 2010-10-01T09:22:37.940 回答
57

我听说了关于 kdiff3 的好消息。

于 2008-09-26T01:45:09.613 回答
45

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

  • 这是免费的。
  • 跨平台(Windows、OS X 和 Linux)。
  • 干净的视觉 UI
  • 您期望的所有差异功能(差异、合并、文件夹差异)。
  • 命令行界面。
  • 可用的键盘快捷键。

用户界面

于 2008-09-26T00:34:31.747 回答
34

vimdiff

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

:help vimdiff 

这个问题涵盖了如何使用它:How do I use vimdiff to resolve a conflict?

在此处输入图像描述

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

于 2010-10-01T13:55:48.023 回答
34

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

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

于 2017-05-29T20:49:54.960 回答
28

您可以尝试P4Merge

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

功能包括:

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

漫反射是我最喜欢的,但我当然有偏见。:-) 这是非常容易使用:

$ diffuse "mine" "output" "theirs"

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

于 2008-12-03T16:20:23.817 回答
13

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

于 2010-04-10T01:13:15.123 回答
9

如果您只是在寻找无法比较的差异工具,那就太好了:http ://www.scootersoftware.com/moreinfo.php

于 2008-09-26T01:50:40.957 回答
8

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

于 2008-11-18T16:49:52.013 回答
7

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

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

    差异合并

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

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

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

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

于 2017-06-16T13:47:39.127 回答
6

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

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

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

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

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

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

它当然是免费的。

于 2017-09-30T05:46:35.653 回答
4

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

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

首先可以通过以下方式调用:

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

使用时调用第二个git mergetool

于 2017-12-01T11:11:40.167 回答
2

您可以在 Linux、Mac 或 Windows 上安装ECMerge diff/merge 工具。它是在 Git 中预先配置的,所以只需使用git mergetool就可以完成这项工作。

于 2010-09-04T12:36:24.970 回答
0

gitx http://gitx.frim.nl/

处理大型提交集时的一些错误,但非常适合浏览更改并选择不同的更改以暂存然后提交。

于 2009-09-01T00:18:51.483 回答