在Git中查看和编辑合并的最佳工具是什么?我想获得一个3向合并视图,在单独的面板中包含“我的”、“他们的”和“祖先”,以及第四个“输出”面板。
此外,调用该工具的说明将是伟大的。(我仍然没有弄清楚如何以不给我错误的方式启动kdiv3。)
我的操作系统是Ubuntu。
我最喜欢的可视化合并工具是SourceGear DiffMerge
Meld是一个免费、开源和跨平台(UNIX/Linux、OSX、Windows)的差异/合并工具。
以下是如何安装它:
我听到了关于KDiF3的好消息。
如果你只是在寻找一个超越比较的差异工具是非常好的:http://www.scootersoftware.com/moreinfo.php
您可以通过传递git mergetool -t=<tool>或--tool=<tool>来更改git mergetool使用的工具。要更改默认值(来自vimdiff),请使用git config merge.tool <tool>。
git mergetool -t=<tool>
--tool=<tool>
git config merge.tool <tool>
弥漫是我最喜欢的,但当然我有偏见。:-)它很容易使用:
$ diffuse "mine" "output" "theirs"
Diffuse是一个用Python编写的小型简单的文本合并工具。使用Diffuse,您可以轻松合并、编辑和查看对代码的更改。Diffuse是免费软件。
gitxhttp://gitx.frim.nl/
使用大型提交集时存在一些错误,但非常适合浏览更改并选择不同的更改进行阶段然后提交。
您可以尝试P4Merge。
使用P4Merge可视化文件版本之间的差异。通过颜色编码解决由并行或并发开发引起的冲突。
其特点包括:
您可以配置自己的合并工具以与“git mergetool”一起使用。
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 difftool
git config --global diff.tool p4merge git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'
请注意,在Unix/Linux中,您不希望$BASE被shell解析为变量-它实际上应该出现在您的~/. gitconfig文件中才能正常工作。
$BASE
Araxis Mergehttp://www.araxis.com/merge 我在Mac OS X上使用它,但我在Windows上使用过它……它不是免费的……但它有一些漂亮的功能……虽然在Windows上更好。
您可以在Linux、Mac或Windows上安装ECMerge差异/合并工具。它已在Git中预先配置,因此只需使用git mergetool即可。
Beyond Compare 3,我最喜欢的,在专业版中有合并功能。它合并的好处是它可以让你看到所有4个视图:基视图、左视图、右视图和合并的结果。它比P4V视觉效果差一些,但比WinDiff视觉效果好得多。它集成了许多源代码控制,适用于Windows/Linux。它有许多功能,如高级规则、版本、手动对齐…
Perforce可视化客户端(P4V)是一个免费工具,它提供了最明确的合并界面之一(参见一些截图)。适用于所有主要平台。我对该工具的主要失望是它的只读接口。您无法手动编辑文件,也无法手动对齐。
PS:P4Merge包含在P4V中。Perforce试图在没有客户端的情况下获得他们的工具有点困难。
SourceGear差异/合并可能是我的第二个免费工具选择。检查合并截屏,你会看到它至少有3个视图。
混合是一个更新的免费工具,我更喜欢SourceGear差异/合并:现在它也可以在大多数平台(Windows/Linux /Mac)上运行,具有原生支持一些源代码控制(如git)的明显优势。所以你可以对所有文件进行一些历史差异,这要简单得多。合并视图(参见截图)只有3个窗格,就像SourceGear差异/合并一样。这使得在复杂情况下合并有点困难。
PS:如果有一天一个工具支持5视图合并,这真的很棒,因为如果你在Git中选择提交,你真的不是一个基础而是两个。两个基础,两个更改,一个结果合并。
vimdiff
一旦您学习了vim(恕我直言,您应该学习),vimdiff只是一个更漂亮的正交概念。要在vim中获得在线帮助:
:help vimdiff
这个问题包括如何使用它:如何使用vimdiff解决冲突?
如果您被困在鼠标使用的黑暗时代,并且您要合并的文件不是很大,我建议meld。
IntelliJ IDEA有一个复杂的合并冲突解决工具与解决魔杖,这大大简化了合并:
如果您使用视觉工作室,Team Explorer内置工具是解决git合并冲突的非常好的工具。
所以对于git合并,你可以尝试:
DiffMerge直观地比较和合并Windows,OS X和Linux上的文件。
Meld是一个可视化的差异和合并工具。
opendiff
我已经尝试了很多这里提到的工具,没有一个是我想要的。
就个人而言,我发现Atom是可视化差异和冲突解决/合并的绝佳工具。
至于合并,没有三个视图,但它们都组合成一个视图,每个版本都有彩色突出显示。您可以直接编辑代码,或者有按钮可以使用您想要的任何版本的代码片段。
我甚至不再将它用作编辑器或IDE,只是为了使用git。干净的UI和非常直接的,加上它是高度可定制的。
您可以从命令行启动它并传入您想要的单个文件 打开或添加您的项目文件夹(git repo)。
我遇到的唯一问题是刷新-当使用大型存储库时,atom更新您在它之外所做的更改可能会很慢。我总是在完成后关闭它,然后当我想再次查看我的更改/提交时重新打开。您还可以使用ctrl+Shift+f5重新加载窗口,这只需要一秒钟。
当然,它是免费的。
我使用不同的工具进行合并和比较:
git config --global diff.tool diffuse git config --global merge.tool kdiff3
第一个可以被称为:
git difftool [BRANCH] -- [FILE or DIR]
当您使用git mergetool时调用第二个。