在 Git 中查看和编辑合并的最佳工具是什么?我想获得一个三向合并视图,在单独的面板中包含“我的”、“他们的”和“祖先”,以及第四个“输出”面板。
此外,调用所述工具的说明会很棒。(我还没有弄清楚如何以不会给我错误的方式启动 kdiff3。)
我的操作系统是 Ubuntu。
在 Git 中查看和编辑合并的最佳工具是什么?我想获得一个三向合并视图,在单独的面板中包含“我的”、“他们的”和“祖先”,以及第四个“输出”面板。
此外,调用所述工具的说明会很棒。(我还没有弄清楚如何以不会给我错误的方式启动 kdiff3。)
我的操作系统是 Ubuntu。
Meld是一个免费、开源和跨平台(UNIX/Linux、OSX、Windows)的差异/合并工具。
以下是如何安装它:
您可以配置自己的合并工具以与“ 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 文件中以使其正常工作。
我最喜欢的Beyond Compare 3在Pro 版中具有合并功能。合并的好处是它可以让您看到所有 4 个视图:基本视图、左视图、右视图和合并结果。它的视觉效果不如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 中挑选提交,你真的没有一个基础,而是两个。两个基础,两个更改和一个结果合并。
我听说了关于 kdiff3 的好消息。
我最喜欢的可视化合并工具是SourceGear DiffMerge
vimdiff
一旦你学会了 vim(恕我直言,你应该),vimdiff 只是一个更漂亮的小正交概念来学习。要在 vim 中获得在线帮助:
:help vimdiff
这个问题涵盖了如何使用它:How do I use vimdiff to resolve a conflict?
如果您陷入鼠标使用的黑暗时代,并且您要合并的文件不是很大,我建议您使用 meld。
IntelliJ IDEA有一个复杂的合并冲突解决工具,带有 Resolve 魔棒,极大地简化了合并:
您可以尝试P4Merge。
使用 P4Merge 可视化文件版本之间的差异。通过颜色编码解决并行或并行开发导致的冲突。
功能包括:
漫反射是我最喜欢的,但我当然有偏见。:-) 这是非常容易使用:
$ diffuse "mine" "output" "theirs"
Diffuse 是一个用 Python 编写的小而简单的文本合并工具。使用 Diffuse,您可以轻松合并、编辑和查看对代码的更改。Diffuse 是免费软件。
Araxis Merge http://www.araxis.com/merge 我在 Mac OS X 上使用它,但我在 Windows 上使用过它……它不是免费的……但它有一些不错的功能……更好窗户虽然。
如果您只是在寻找无法比较的差异工具,那就太好了:http ://www.scootersoftware.com/moreinfo.php
您可以通过传递git mergetool -t=<tool>
或来更改 git mergetool 使用的工具--tool=<tool>
。要更改默认值(来自 vimdiff),请使用git config merge.tool <tool>
.
如果你使用Visual Studio,Team Explorer 内置工具是一个非常好的解决 git 合并冲突的工具。
我已经尝试了很多这里提到的工具,但没有一个是我想要的。
就我个人而言,我发现Atom是一个用于可视化差异和解决冲突/合并的好工具。
至于合并,没有三个视图,但它们都合并为一个,每个版本都有彩色突出显示。您可以直接编辑代码,也可以通过按钮使用您想要的任何版本的代码段。
我什至不再将它用作编辑器或 IDE,只是为了使用 git。干净的用户界面和非常直接的,加上它是高度可定制的。
您可以从命令行启动它并传入您要打开的单个文件,或添加您的项目文件夹(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
。
您可以在 Linux、Mac 或 Windows 上安装ECMerge diff/merge 工具。它是在 Git 中预先配置的,所以只需使用git mergetool
就可以完成这项工作。
gitx http://gitx.frim.nl/
处理大型提交集时的一些错误,但非常适合浏览更改并选择不同的更改以暂存然后提交。