在Git中查看和编辑合并的最佳工具是什么?我想得到一个三向合并视图,在单独的面板中有“我的”,“他们的”和“祖先”,以及第四个“输出”面板。
此外,调用所述工具的说明也很棒。 (我仍然没有弄清楚如何以一种不会给我错误的方式启动kdiff3。)
我的操作系统是Ubuntu。
答案 0 :(得分:312)
Meld是差异/合并工具。
以下是如何安装它:
答案 1 :(得分:84)
您可以将自己的合并工具配置为与“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中,您不希望shell将$BASE
解析为变量 - 它实际上应该出现在〜/ .gitconfig文件中,以便它可以工作。
答案 2 :(得分:61)
Beyond Compare 3在专业版中具有merge功能。合并的好处是它可以让你看到所有4个视图:base,left,right和merged result。它比 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中挑选提交你真的没有一个基础而是两个。两个基础,两个更改,一个合并。答案 3 :(得分:42)
我最喜欢的视觉合并工具是SourceGear DiffMerge
答案 4 :(得分:35)
我听到有关kdiff3的好消息。
答案 5 :(得分:23)
vimdiff同时
一旦你学会了vim(和你应该的恕我直言),vimdiff只是一个更美丽的小正交概念。要获得vim的在线帮助:
:help vimdiff
如果你在鼠标使用的黑暗时代陷入困境,并且你正在合并的文件不是很大,我推荐meld。
答案 6 :(得分:22)
您可以尝试P4Merge。
使用P4Merge可视化文件版本之间的差异。通过颜色编码解决因并行或并发开发而产生的冲突。
这些功能包括:
答案 7 :(得分:15)
Diffuse是我的最爱,但我当然有偏见。 :-)它很容易使用:
$ diffuse "mine" "output" "theirs"
Diffuse是一个用Python编写的小而简单的文本合并工具。使用漫反射,您可以轻松地合并,编辑和查看代码更改。 Diffuse是免费软件。
答案 8 :(得分:13)
IntelliJ IDEA 有一个复杂的merge conflict resolution tool,带有Resolve魔棒,极大地简化了合并:
答案 9 :(得分:12)
Araxis Merge http://www.araxis.com/merge 我在Mac OS X上使用它,但我在Windows上使用它...它不是免费的......但它在Windows上有一些nice features ...更好。
答案 10 :(得分:7)
您可以通过传递git mergetool -t=<tool>
或--tool=<tool>
来更改git mergetool使用的工具。要更改默认值(来自vimdiff),请使用git config merge.tool <tool>
。
答案 11 :(得分:7)
如果你只是在寻找一个超越比较的差异工具,那就非常好了:http://www.scootersoftware.com/moreinfo.php
答案 12 :(得分:2)
我已经尝试了很多这里提到的工具,但我们都没有找到我想要的工具。
就个人而言,我发现Atom是一个可视化差异和冲突解决/合并的好工具。
至于合并,没有三个视图,但它们全部合并为一个,每个版本都带有彩色突出显示。您可以直接编辑代码,也可以使用按钮来使用您想要的任何版本的代码段。
我甚至不再使用它作为编辑器或IDE,只是为了使用git。清洁用户界面,非常简单,而且可以高度自定义。
您可以从命令行启动它并传入您想要的单个文件 打开或添加项目文件夹(git repo)。
我唯一遇到的问题是刷新 - 当处理大型存储库时,原子可能很慢,无法更新您在其外部所做的更改。我只是在我结束时总是关闭它,然后当我想再次查看我的更改/提交时重新打开它。您也可以使用ctrl + shift + f5重新加载窗口,这只需要一秒钟。
它当然是免费的。
答案 13 :(得分:1)
您可以在Linux,Mac或Windows上安装ECMerge diff/merge tool。它是在Git中预先配置的,因此只需使用git mergetool
即可完成任务。
答案 14 :(得分:1)
因此,对于git merge,您可以尝试:
答案 15 :(得分:1)
我使用不同的工具进行合并和比较:
int[] sqlTypes() {
[BigDecimalType.INSTANCE.sqlType(), StringType.INSTANCE.sqlType()]
}
拳头可以通过以下方式调用:
git config --global diff.tool diffuse
git config --global merge.tool kdiff3
使用git difftool [BRANCH] -- [FILE or DIR]
时会调用第二个。
答案 16 :(得分:0)
如果你使用 visual studio ,Team Explorer内置工具是解决git合并冲突的一个非常好的工具。
答案 17 :(得分:-1)
gitx http://gitx.frim.nl/
使用大型提交集时会出现一些错误,但非常适合浏览更改并选择不同的更改到舞台然后提交。