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

and*_*ndy 566 git version-control merge

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

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

我的操作系统是Ubuntu.

use*_*805 322

Meld是差异/合并工具.

以下是如何安装它:

  • 谁关心原作者正在使用的操作系统?,这个问题足以引起所有寻找它的人的兴趣.当你真正看到4个窗格进行测试时,三向差异就是这样; 合并基/本地/远程/结果 (53认同)
  • `meld`对于复杂的差异很繁琐,能够选择像'为所有未解决的冲突选择b'这样的选项比在'meld`中手动点击每个块的正确箭头要好得多.此外,能够合并到特定的输出文件而不是编辑输入文件对于退出失败的神经来说是非常宝贵的. (14认同)
  • kdiff3让你看到4个视图,meld只允许3个视图.Meld不是一个真正的合并工具,它是一个diff工具,因为它没有显示基本版本视图. (4认同)
  • @naxa Meld现在有一个Windows安装程序:https://code.google.com/p/meld-installer/ (3认同)
  • 梅尔德很可怕,特别是对于合并.它没有选择"自动转移非冲突的变化",使每次合并都非常痛苦. (3认同)
  • 现在有一个meld windows安装程序(截至至少1.8).转到他们的网站,他们有Sourceforge的链接.谷歌代码是否会移动,谁知道会发生什么.因此,请检查其网站上的链接. (2认同)
  • 梅尔德有一些问题.做"Mine then theirs"改变真的很烦人.而且有时难以阅读. (2认同)

Evg*_*eny 85

您可以配置自己的合并工具以与" 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
Run Code Online (Sandbox Code Playgroud)

当你在它时,你也可以将它设置为" git difftool" 的difftool :

  git config --global diff.tool p4merge
  git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'
Run Code Online (Sandbox Code Playgroud)

请注意,在Unix/Linux中,您不希望$BASEshell将其解析为变量 - 它实际上应该出现在〜/ .gitconfig文件中以使其工作.

  • 请注意,由于p4merge(现在)是官方支持的git mergetools之一,因此不再需要使用*tool.*.cmd变量. (9认同)
  • 确保使用正确的报价单:http://stackoverflow.com/a/1217994/3543437 (2认同)

Wer*_*ght 62

超越比较3,我最喜欢的,在 Pro版本中有一个合并功能.合并的好处是它可以让你看到所有4个视图:base,left,right和merged result.它的视觉效果不如 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中挑选提交你真的没有一个基础而是两个.两个基础,两个更改,一个合并.

  • Perforce Merge很棒.它有一个4窗格合并工具,它真的有帮助:你的,他们的,共同基础,新的 (7认同)
  • 您可以自定安装P4Merge而不需要其余的perforce. (5认同)
  • 最新版本的p4merge没有"只读"界面.您可以在下部窗格中编辑合并文件. (5认同)
  • P4 [也被谷歌使用](http://www.quora.com/What-version-control-system-does-Google-use-and-why). (4认同)

Luk*_*uke 42

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

  • 这是免费的.
  • 跨平台(Windows,OS X和Linux).
  • 清洁可视UI
  • 您期望的所有差异功能(Diff,Merge,Folder Diff).
  • 命令行界面.
  • 可用的键盘快捷键.

用户界面

  • 你如何配置它与git一起工作? (3认同)
  • @Kyralessa见http://stackoverflow.com/questions/255202/how-do-i-view-git-diff-output-with-visual-diff-program (2认同)
  • 谢谢你把它介绍给我!! :D这个工具很干净,安装和使用的时间比meld少.我花了半个小时试图安装meld.但是这个我在5分钟内做了!! (2认同)
  • 注意:diffmerge似乎没有3向合并功能.因为这个原因,我试了几个星期后就放弃了它 (2认同)

小智 38

我听到有关kdiff3的好消息.

  • +1:kdiff3远远优于meld,并且git本身也支持. (3认同)
  • `kdiff3`有更多的功能,但`meld`有更好的UI.在我看来,`meld`对于简单合并更好,其中`meld`提供的功能就足够了.记得也试试`diffuse`. (3认同)

And*_*ner 29

vimdiff同时

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

:help vimdiff 
Run Code Online (Sandbox Code Playgroud)

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

  • 使用Fugitive插件可以更轻松!http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/ (2认同)

Ron*_*Ron 22

你可以试试P4Merge.

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

功能包括:

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


niu*_*ech 17

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

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

  • Idea 的合并工具非常棒。它甚至可以在 Idea 的社区版中使用,这意味着您可以免费使用它作为高级合并工具 - 这就是我正在做的事情(在大多数情况下,我在工作中使用 VSCode,并且在困难的合并情况下使用 Idea)。VSCode 也做得相当不错,有时甚至比 Idea 还要好。但对于困难的情况,他们的三面板布局是我见过的最好的工具 (5认同)

小智 15

弥漫是我的最爱,但当然我有偏见.:-) 这是非常容易使用:

$ diffuse "mine" "output" "theirs"
Run Code Online (Sandbox Code Playgroud)

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

  • 我真的很喜欢分散,而且我没有偏见。 (2认同)
  • @Derrick Moser:`diffuse`看起来很漂亮.我现在只是尝试了它,它比`kdiff3`做得更好.但是,我正在尝试将它与`git mergetool`一起使用,它会打开彼此相邻的4个文件(本地,合并结果,远程,基本),而我的屏幕还不够广泛.我不得不做很多水平滚动.kdiff3只显示3彼此相邻,结果显示在窗口的下半部分. (2认同)

Cli*_*ntm 12

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


Nat*_*ger 7

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


use*_*149 7

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


ken*_*orb 7

所以对于 git merge,你可以尝试:

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

    差异合并

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

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

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

  • `git config --global merge.tool opendiff` 最适合我 (2认同)

小智 6

我已经尝试了很多这里提到的工具,但没有一个是我正在寻找的。

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

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

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

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

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

而且它当然是免费的。


eph*_*err 6

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

git config --global diff.tool diffuse
git config --global merge.tool kdiff3
Run Code Online (Sandbox Code Playgroud)

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

git difftool [BRANCH] -- [FILE or DIR]
Run Code Online (Sandbox Code Playgroud)

第二个在您使用时被调用git mergetool


Cha*_*ith 5

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