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

此外,调用该工具的指令也很好。(我仍然没有弄清楚如何以这样一种方式启动kdiff3,它不会给我一个错误。)

我的操作系统是Ubuntu。


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

它是免费的。 跨平台(Windows、OS X、Linux)。 干净的可视化UI 你所期望的所有差异功能(差异,合并,文件夹差异)。 命令行接口。 可用的键盘快捷键。


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

下面是如何安装它:

Ubuntu Mac Windows:“推荐的Meld Windows版本是最新的版本,可从https://meldmerge.org获得MSI。”


我听说kdiff3很不错。


如果你只是在寻找一个无与伦比的diff工具,非常不错:http://www.scootersoftware.com/moreinfo.php


你可以通过传递git mergetool -t=<tool>或——tool=<tool>来改变git mergetool使用的工具。要改变默认值(从vimdiff)使用git配置合并。工具> <工具。


漫射是我的最爱,当然我有偏见。:-)它非常容易使用:

$ diffuse "mine" "output" "theirs"

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


吉特克斯 http://gitx.frim.nl/

当使用大型提交集时,会出现一些错误,但对于浏览更改和选择不同的更改进行阶段并提交非常有用。


您可以尝试P4Merge。

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

特点包括:

Highlight and edit text file differences Choose to include or ignore line endings or white spaces Recognize line-ending conventions for Windows (CRLF), Mac (CR), and Unix (LF) Use command-line parameters and launch from non-Perforce applications Display line numbers when comparing and merging files Exclude files that are modified, unique, or unchanged Filter files by name or extension Organize modified assets in familiar file/folder hierarchy Compare JPEG, GIF, TIFF, BMP, and other file formats Extend using the Qt API Overlay images or display side-by-side Highlight differences on overlaid images


你可以配置你自己的合并工具来使用“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文件来工作。


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


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


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

Perforce Visual Client (P4V)是一个免费的工具,它为合并提供了最明确的接口之一(参见一些截图)。适用于所有主要平台。我对这个工具最失望的地方是它那种“只读”界面。不能手动编辑文件,也不能手动对齐。

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

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


Meld是一个更新的免费工具,我更喜欢SourceGear Diff/Merge:现在它也可以在大多数平台(Windows/Linux/Mac)上工作,具有本地支持一些源代码控制(如Git)的独特优势。所以你可以在所有文件上有一些历史差异,这很简单。合并视图(见截图)只有3个窗格,就像SourceGear Diff/ merge一样。这使得合并在复杂的情况下更加困难。

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


维姆迪夫

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

:help vimdiff 

这个问题涵盖了如何使用它:我如何使用vimdiff来解决冲突?

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


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


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


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

DiffMerge可以直观地比较和合并Windows、OS X和Linux上的文件。 Meld,是一个视觉差异和合并工具。 KDiff3,一个diff和合并程序),比较或合并2或3个文本输入文件/dirs。 opendiff (macOS上的Xcode工具的一部分),一个命令行实用程序,从终端启动FileMerge应用程序,以图形化的方式比较文件或目录,包括合并。


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

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

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

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

You can start it from the command line and pass in a single file you want to open to, or add your project folder (git repo). I would also recommend project-manager as a very convenient way to navigate between projects without filling up your tree view. The only problem I've had is refreshing -- when working with large repositories atom can be slow to update changes you make outside of it. I just always close it when I'm finished, and then reopen when I want to view my changes/commit again. You can also reload the window with ctrl+shift+f5, which only takes a second.

当然是免费的。


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

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

First可以被调用:

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

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