你如何在FileMerge中进行3向合并?

时间:2010-07-22 18:53:54

标签: macos filemerge

我看到了指定三个文件(左,右和祖先)的选项,但似乎无法实际显示祖先。

enter image description here

底部窗格显示合并的结果。我宁愿看看原始内容是什么,所以我能理解冲突左右两边的背景。这可能吗? FileMerge有很糟糕的帮助文档。

4 个答案:

答案 0 :(得分:5)

在2.5版本中,他们最终添加了此功能。 “Ancestor”现在实际上意味着“Ancestor”,并且有一个单独的“合并”选项

从命令行可以执行以下操作:

$ opendiff mine theirs --ancestor base

“我的”是我的文件版本,“他们的”是我试图合并的版本,“base”是“我的”和“他们”的共同祖先。

此命令将打开文件合并并在底部显示祖先(合并在2010年的示例中)。

不幸的是,不可能将--merge选项与--ancestor选项一起使用。因此,您无法查看三向合并并使用“文件合并”同时解决冲突。

我开始使用File Merge来查看和理解冲突,然后像往常一样在文本编辑器中编辑冲突标记。 (叹气...)

答案 1 :(得分:4)

据我所知,filemerge无法做到这一点。

付费(但非常好)应用:http://www.deltopia.com/

开源:http://sourcegear.com/diffmerge/

答案 2 :(得分:3)

@mehaase: 这不完全正确。以下是FileMerge帮助中新祖先选项的文档:

Sometimes, you need to compare two versions of a file that have been modified
independently. For example, say two people branch a file; that is, they make
copies of a file and modify it. In this case, specify an ancestor file, which
is the common ancestor of the modified files.

The ancestor file lets FileMerge choose when to take changes from the left
file or the right file. For example, say the left file and the right file
contain a different version of line 33. If line 33 in the ancestor matches
line 33 in the left file, you know the change happened after the two files
branched off, and FileMerge prefers the newer version of line 33 in the right
file. If line 33 is different among the three files, you know that the files’
editors edited the lines separately. FileMerge displays that difference with
a red border and asks you to choose with edit to use.

因此,祖先仍然没有显示,但它有助于合并工具在决定默认选择左侧或右侧时做出更明智的决定。

答案 3 :(得分:2)

我意识到这个答案在技术上没有回答关于如何使用FileMerge 进行的问题,但我使用kdiff3(适用于Windows,Mac和* nix)并显示基础/祖先,加上左右,加上输出/结果,用于3向合并。 (http://kdiff3.sourceforge.net/

它不是一个漂亮的用户界面,但(恕我直言)它使用起来相当简单并且效果很好。它是开源的。 : - )