【问题标题】:What's the best visual merge tool for Git? [closed]Git 最好的可视化合并工具是什么? [关闭]
【发布时间】:2010-09-13 07:40:28
【问题描述】:

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

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

我的操作系统是 Ubuntu。

【问题讨论】:

  • “但现在不允许”是的,这就是我现在讨厌 stackoverflow 的原因。没有这些问题就太枯燥乏味了。
  • 是否有允许此类问题的 stackexchange 站点?如果没有,应该有..
  • 似乎是时候进行新的堆栈溢出了,允许此类问题。显然,正如许多人所说的那样,这些问题对很多人都很有价值,以至于关闭它们是很愚蠢的。我认为你的官僚作风已经越过了董事会。您如何就这个问题进行民意调查,看看您的“客户”想要什么;P
  • 问题:softwarerecs 没用,因为专家在这里,而不是那里。

标签: git version-control merge


【解决方案1】:

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

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

【讨论】:

  • 如何配置它以使用 git?
  • 谢谢你介绍给我!! :D 这个工具很干净,安装和使用的时间比 meld 少。我花了半个小时尝试安装融合。但是这个我在 5 分钟内完成了!!
  • 注意:diffmerge 似乎没有 3 路合并功能。出于这个原因,我在尝试了几周后放弃了它
  • 这是一个不错的工具,还可以比较文件夹。问题是它有点慢(MacBookPro 15 2014,MacOS Catalina)
【解决方案2】:

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

安装方法如下:

【讨论】:

  • 谁在乎原作者使用的操作系统?这个问题很笼统,每个寻找它的人都会感兴趣。而 3-way diff 是当您实际看到 4 个带有测试的窗格时;合并基础/本地/远程/结果
  • meld 对复杂的差异很乏味,能够选择像chose b for all unresolved conflicts 这样的选项比手动单击meld 中的每个大块的正确箭头要好得多。此外,能够合并到特定的输出文件而不是在适当的位置编辑输入文件对于退出失败的 nerges 非常宝贵。
  • @naxa Meld 现在有一个 Windows 安装程序:code.google.com/p/meld-installer
  • kdiff3 让你看到 4 个视图,meld 只允许 3 个视图。 Meld 不是一个真正的合并工具,它是一个差异工具,因为它不显示基本版本视图。
  • 融合是可怕的,尤其是对于合并。它没有“自动传输非冲突更改”的选项,这使得每次合并都非常痛苦。
【解决方案3】:

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

【讨论】:

  • +1:kdiff3 远胜于 meld,并且原生支持 git。
  • kdiff3 有更多的功能,但meld 有更好的用户界面。在我看来,meld 更适合在 meld 提供的功能足够的情况下轻松合并。记得也试试diffuse
  • kdiff3 让你看到 4 个视图,meld 只允许 3 个视图。 Meld 不是一个真正的合并工具,它是一个差异工具,因为它不显示基本版本视图。
  • kdiff3 没问题,但它通常会因“数据丢失”错误而失败,在这种情况下需要替代方法
  • 我发现 kdiff3 非常出色,自己解决了大部分合并问题,这要归功于与共同祖先的完美匹配。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      $ diffuse "mine" "output" "theirs"
      

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

      【讨论】:

      • 我非常喜欢diffuse,而且我没有偏见。
      • @Derrick Moser:diffuse 看起来很不错。我现在刚刚尝试过,它的差异比kdiff3 更好。但是,我正在尝试将它与git mergetool 一起使用,它会打开彼此相邻的 4 个文件(本地、合并结果、远程、基础),而我的屏幕不够宽。我不得不做很多水平滚动。 kdiff3 只显示 3 并排显示,结果显示在窗口的下半部分。
      • diffuse 与 meld 相比有一些额外的合并选项(允许加入两个版本而不是选择其中一个)。
      • diffuse 在 Windows 上开箱即用,用于比较 2 个文件夹,与 CVS 存储库,与 Git 存储库,合并 git 合并冲突。漫反射差异文件在单个窗口的选项卡中打开。我切换到了diffuse(在使用了emacs的ediff(功能太多,在90年代有用)> vimdiff(复杂的插件按键)> p4merge > araxis(专有)> meld(太慢),tkdiff(仅cvs)> kdiff3(好,良好的正则表达式忽略功能)> winmerge(好)> 扩散(快速,便携,按预期工作))我第一次尝试扩散。
      【解决方案7】:

      gitxhttp://gitx.frim.nl/

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

      【讨论】:

        【解决方案8】:

        你可以试试P4Merge

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

        功能包括:

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

        【讨论】:

        【解决方案9】:

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

        【讨论】:

        • 请注意,由于 p4merge 是(现在)官方支持的 git mergetools 之一,因此不再需要使用 tool..cmd 变量。跨度>
        • 确保您使用正确的报价:stackoverflow.com/a/1217994/3543437
        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

          【讨论】:

            【解决方案12】:

            Beyond Compare 3,我的最爱,在专业版中具有merge 功能。合并的好处是它可以让您看到所有 4 个视图:基本视图、左视图、右视图和合并结果。它的视觉效果不如 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 中挑选提交,你真的没有一个基础,而是两个。两个基础、两个更改和一个结果合并。

            【讨论】:

            • Perforce 合并很棒。它有一个 4 窗格合并工具,真正有帮助:你的、他们的、公共基础的、新的
            • P4 也是used by Google
            • 您可以只自定义安装 P4Merge 而无需安装 perforce 的其余部分。
            • 最新版本的 p4merge 没有“只读”界面。您可以在下部窗格中编辑合并的文件。
            • 这是一个非常好的答案和讨论。谢谢分享!
            【解决方案13】:

            vimdiff

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

            :help vimdiff 
            

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

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

            【讨论】:

            • gvimdiff 也适用于此目的。
            • 使用 Fugitive 插件更容易! vimcasts.org/episodes/…
            • 如果有办法清楚地看到本地/基地和基地/远程之间的差异。
            【解决方案14】:

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

            【讨论】:

            • Idea 的合并工具非常棒。它甚至可以在 Idea 的社区版中使用,这意味着您可以免费使用它作为高级合并工具 - 这就是我正在做的事情(在大多数情况下,我在工作的地方使用 VSCode,而我在艰难的合并案例中使用 Idea)。 VSCode 也做得很好,有时甚至比 Idea 还要好。但对于棘手的情况,他们的 3 面板布局是我见过的最好的工具
            • 我讨厌滚动条“文件摘要”不在一起!我喜欢漫反射的主要原因!
            • 对我没用
            【解决方案15】:

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

            【讨论】:

              【解决方案16】:

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

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

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

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

              【讨论】:

              • git config --global merge.tool opendiff 最适合我
              【解决方案17】:

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

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

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

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

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

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

              当然是免费的。

              【讨论】:

                【解决方案18】:

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

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

                First 可以通过以下方式调用:

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

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

                【讨论】:

                  猜你喜欢
                  • 2011-11-05
                  • 2010-10-09
                  • 1970-01-01
                  • 2011-08-07
                  • 2010-09-15
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-11-28
                  • 1970-01-01
                  相关资源
                  最近更新 更多