Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

比较文件和文件夹以及合并文件

您可以使用比较工具来显示选定文件或文件夹对组之间的差异。对于某些文件类型,您还可以将更改从一个文件合并到另一个文件中。

比较过程

比较过程包括三个步骤:

  1. 选择要比较的文件或文件夹。

  2. 选择比较类型。

  3. 浏览比较报告。

选择要比较的文件或文件夹

您可以使用以下任意方法选择要比较的文件和文件夹:

  • MATLAB® 桌面 - 转至主页选项卡,并在文件部分中点击比较。点击 open folder 按钮以选择要比较的项目,或将文件从文件浏览器拖入第一个文件或文件夹第二个文件或文件夹字段。

  • 当前文件夹浏览器 - 选择某个文件或文件夹,右键点击,然后选择比较对象。点击 open folder 按钮以选择要比较的第二个项目,或将文件从文件浏览器拖入第二个文件或文件夹字段。要选择要比较的两个文件或子文件夹,请在按住 Ctrl 的同时点击文件名。然后右键点击并选择比较选定的文件/文件夹

  • 编辑器或实时编辑器 - 转至编辑器实时编辑器选项卡,并在文件部分中点击比较。比较工具在第一个文件或文件夹字段中包含当前打开的文件。点击 open folder 按钮以选择要比较的第二个项目,或将文件从文件浏览器拖入第二个文件或文件夹字段。

    要将文件的自动保存版本与磁盘上保存的版本进行比较,请转到编辑器选项卡并点击比较 ,然后选择与磁盘上的版本进行比较保存并与自动保存版本进行比较。如果您的文件已修改,编辑器会在比较之前保存该文件。与磁盘上的版本进行比较保存并与自动保存进行比较选项仅在自动保存文件更改的选项禁用时可用。要禁用该选项,请转到主页选项卡,然后在环境部分中点击预设。然后,选择编辑器/调试器,并清除在文件外点击时保存更改。此选项在实时编辑器中不可用。

  • 命令行窗口 - 使用 visdiff 函数。例如,要使用 visdiff 函数和默认的文本比较对 lengthofline.mlengthofline2.m 这两个文件进行比较,请键入 visdiff('lengthofline.m', 'lengthofline2.m')。MATLAB 将打开比较工具并显示生成的比较报告。

提示

选择要比较的文件夹时,选择包括子文件夹以在比较中包括子文件夹内容。

选择比较类型

比较工具使用为选定项定义的默认比较类型对选定项进行比较。对于某些项类型,您可以选择不同于默认类型的比较类型。例如,您可以选择文本、二进制、文件列表或 XML 比较。要更改比较类型,请选择要比较的文件或文件夹。然后,从可用的比较类型选项中进行选择。比较工具仅显示对选定项类型有效的选项。

无法更改现有比较报告的比较类型。要更改比较类型,请开始一次新的比较。

如果您使用当前文件夹浏览器或 visdiff 函数指定两个要比较的文件或文件夹,则比较工具会自动执行默认比较类型。例如,在当前文件夹浏览器中,如果选择两个 XML 文件进行比较,该工具将使用默认的文本比较。要将比较类型改为层次化比较,请使用比较工具创建一个新比较。

浏览比较报告

选择比较类型后,点击比较按钮。将打开比较报告。您可以根据所比较的项以不同的方式来浏览比较报告。有关详细信息,请参阅下面针对每种比较类型描述的详细信息。

比较文件夹和 Zip 文件

您可以使用比较工具来比较文件夹和 Zip 文件的任意组合。例如,您可以将文件夹的内容与 Zip 文件的内容进行比较。比较工具对所选项目执行文件列表比较。

创建文件夹比较报告,以便:

  • 确定共同文件。

  • 确定具有相同名称的文件或文件夹是否具有相同的内容。如果存在此类文件或文件夹,您可以直接从报告打开项目的详细比较报告。

在执行文件列表比较时,将打开一个新窗口,并排显示指定列表的内容。例如,假设您有两个文件夹 curvefittingscurvefittings2,二者之间有几处差异。在您比较这两个文件夹时,比较工具会显示结果报告。

比较工具使用下表中列出的颜色突出显示不匹配的文件和子文件夹。

高亮颜色说明
紫色文件或文件夹的内容有差异。点击比较链接以调查详情。
蓝色 文件或文件夹仅在右侧列表中存在。
黄色文件或文件夹仅在左侧列表中存在。
文件或文件夹相同。

您可以使用多种方法深入浏览结果:

  • 要按名称、类型、大小或最后修改时间戳对结果排序,请点击相应的列标题。例如,点击类型列标题可按文件夹和文件类型排序。

  • 要打开详细比较报告以查看具有不同内容的项目,请点击项目旁边的比较链接。

  • 要在编辑器中打开文件,请点击文件名旁边的打开链接。如果两个文件夹中均存在该文件,可以点击链接以打开文件的左侧右侧版本。

  • 如果子文件夹非常大且包含许多文件,则会在后台继续进行分析。该工具将会在报告的顶部显示仍要比较的项数。您可以点击跳过当前项跳过当前项,或点击全部取消停止进一步分析。

  • 为节省查看差异所需的时间,尤其是在比较多个子文件夹时,您可以对报告进行筛选。要应用筛选器,请在视图选项卡上,选择筛选器 > filterName

    要创建新筛选器,请在视图选项卡上,选择筛选器 > 添加/删除筛选器。您可以指定筛选器以忽略某些文件和文件夹,例如备份文件以及由修订版本控制系统创建的文件。例如,要忽略名为 CVS 的文件夹中的所有文件和文件夹,请键入 CVS/。要忽略名为 CVS 的文件夹中的所有文件,而不忽略子文件夹,请键入 CVS/*

    要编辑现有筛选器,请双击该筛选器。

有关如何进一步配置比较报告的信息,请参阅其他比较工具

比较文本文件

您可以使用比较工具来比较并合并两个文本文件中的行。在执行文本比较时,将打开一个新窗口,并排显示两个文件。两个文件之间的符号指示您可以如何调整这些文件以使其匹配。例如,运行以下代码以查看示例文件 lengthofline.mlengthofline2.m 的文本比较结果。

file1 = fullfile(matlabroot,'help','techdoc','matlab_env',...
'examples','lengthofline.m')
file2 = fullfile(matlabroot,'help',...
'techdoc','matlab_env','examples','lengthofline2.m')
visdiff(file1,file2)
比较工具随即显示结果报告。

比较工具在比较报告的顶部显示差异总数,并使用下表中列出的颜色突出显示发生更改的行。

高亮颜色说明
紫色该行包含差异。比较工具在两个文件之间的列中显示 x
深紫色突出显示的字符存在差异。
蓝色行仅在右侧文件中存在。比较工具在两个文件之间的列中显示 >
黄色行仅在左侧文件中存在。比较工具在两个文件之间的列中显示 <

比较工具会尝试对各行进行匹配并检测已添加、删除或更改的文本。例如,在对 lengthofline.mlengthofline2.m 进行文本比较时,该工具确定 lengthofline2.m 有一行代码在 lengthofline.m 中不存在,并将其以蓝色突出显示(第 23 行)。另外,该工具将其他行考虑在内并确定在每个文件中包含 end 语句的行匹配,即使 end 语句不在两个文件中的同一行编号上出现也是如此。

您可以使用多种方法进一步浏览和配置结果:

  • 查看差异摘要 - 要查看两个文本文件之间的差异摘要,包括每个文件中匹配的行数和不匹配的行数,请滚动至比较报告的底部。

  • 忽略空格差异 - 为帮助区分功能差异与缩进差异,您可以隐藏空格差异。要隐藏仅涉及空白字符的差异,请转至视图选项卡,点击筛选器按钮,然后选择忽略空白

  • 仅显示差异 - 要指定仅显示差异还是显示整个文件,请转至视图选项卡,点击筛选器按钮,然后选中或清除仅显示差异复选框。仅显示差异对于大型文本比较报告而言尤其有用。仅显示差异并且隐藏某些行时,报告会显示一条消息,指示隐藏的行数。例如,如果隐藏了 10 行,则报告会显示 10 unmodified lines hidden

  • 更改显示宽度 - 要增大或减小比较显示中的文本文件的行长度,请转至视图选项卡,并在显示部分更改列宽。根据需要重新调整窗口大小。

  • 保存 HTML 报告 - 要将比较报告另存为 HTML 文件,请转至比较选项卡,然后在比较部分中点击另存为 > HTML

有关如何进一步配置比较报告的信息,请参阅其他比较工具

要以步进方式逐个查看差异,请使用 按钮。到达最后一处差异后,点击 按钮会循环回文件中的第一处差异。类似地,如果选中第一处差异,然后点击 按钮,则比较工具会循环至文件中的最后一处差异。

如果您要比较的文件过长,比较工具在尝试执行文件比较时可能出现内存不足。这种情况下,它会显示以下消息:

已超出最大文件长度。 
默认将进行逐行比较。
出现这种情况时,比较工具将会切换至逐行比较。例如,在 lengthofline.mlengthofline2.m 的逐行比较中,该工具高亮显示包含 end 语句的行,因为在执行此操作时,它发现一个文件中的最后一行与另一个文件中的最后一行不匹配。

默认情况下,XML 文件使用文本比较方式进行比较。要使用层次化比较对 XML 文件进行比较,请参阅比较 XML 文件

合并文本文件

比较文本文件时,您可以将来自一个文件的更改内容合并到另一个文件。在解决不同版本文件之间的冲突时,合并更改内容很有用处。在合并更改时,只能从左向右合并。如果要合并到左侧文件中,请在开始合并之前点击 交换位置按钮。点击 交换位置按钮将还原已合并的任何内容,并为原文件创建一份新的比较报告。

要将左侧文件中的更改合并到右侧文件,请选择报告中的差异,然后在比较选项卡上,点击 合并按钮。比较工具随即以灰色突出显示合并的行,并显示绿色合并箭头。

报告顶部的合并文件名称指示,该文件包含尚未保存的更改内容 (filename.m*)。

要还原上一次合并操作,请在比较选项卡中点击撤消。点击重做可重新应用合并。要还原所有合并并重新开始,请点击刷新

要保存更改,请点击保存合并的文件。要保存为其他名称,请选择保存合并的文件 > 将合并的文件另存为

要在编辑器中查看文件,请点击报告中的行号链接。在编辑器中进行任何更改之前,请先从比较报告中保存合并更改。否则,比较报告可能会变得不正确。比较报告不会自动更新以反映您在编辑器中所做的更改。

比较二进制文件

可以使用比较工具比较两个二进制文件,例如 DLL 文件或 MEX 文件。您也可以对任意两个选定的文件执行二进制比较,而不是默认比较。

要使用二进制比较对任意两个文件进行比较,请在比较类型菜单中,选择“二进制比较”。当执行二进制比较时,将打开一个新窗口,指示两个文件相同还是不同。如果这两个文件不同,可点击显示详细信息链接以查看二进制文件和第一个差异的字节偏移量。

比较其他文件类型

您可以使用比较工具来比较其他文件类型:

  • 实时代码 - 比较和合并两个实时代码文件中的代码和文本。有关详细信息,请参阅比较和合并实时脚本和函数

  • App - 比较和合并两个 App 中的代码。有关详细信息,请参阅比较和合并 App

  • MAT 文件 - 比较和合并两个 MAT 文件中的变量。有关详细信息,请参阅比较和合并 MAT 文件

  • XML 文件 - 使用文本比较或层次化的 XML 比较对两个 XML 文件进行比较。有关详细信息,请参阅比较 XML 文件

  • Simulink® 模型 - 如果您有 Simulink,您可以比较和合并 Simulink 模型。有关信息,请参阅 模型比较 (Simulink)

其他比较工具

您可以使用以下可用工具进一步浏览和配置比较报告:

  • 交换位置按钮 - 将左侧的文件或文件夹与右侧的文件或文件夹进行交换。

  • 刷新按钮 - 在编辑器中对文件进行更改并保存后,在比较工具中更新结果。

  • 查找按钮 - 在当前显示中查找短语。有关详细信息,请参阅查找命令行窗口或历史记录中的文本

比较预设

您可以使用“比较”预设项来自定义比较工具。要更改“比较”预设项,请在主页选项卡的环境部分中,点击 预设。然后,选择 MATLAB > 比较

颜色预设项

您可以更改比较工具用于突出显示已更改行的颜色。颜色预设项随即应用于所有比较类型。

要更改颜色预设项,请在“比较”预设项的颜色部分中,更改用于显示差异、修改的行、修改的内容和合并的行的颜色。示例区域显示所选颜色的预览。在更改比较颜色后,您必须刷新打开的比较报告才能看到更新后的颜色。

要保存修改的颜色预设项以便用于未来的 MATLAB 会话,请点击另存为,并为您的颜色设置配置文件输入名称。保存颜色配置文件后,您可以在当前设置列表中选择该配置文件。要还原默认颜色配置文件,请点击重置

外部源代码管理集成预设项

您可以使用比较工具来比较和合并外部源代码管理工具中的文件和文件夹。要使外部源代码管理工具能够重用打开的 MATLAB 会话,请在“比较”预设项的外部源代码管理集成部分中,选择允许外部源代码管理工具使用打开的 MATLAB 会话执行差异分析和合并选项。当您将源代码管理工具配置为使用 MATLAB 比较工具时,比较工具会提示您选择此选项。

有关详细信息,请参阅Customize External Source Control to Use MATLAB for Diff and Merge (Simulink)

故障排除

如果您在比较大文件时遇到类似 java.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: GC Overhead limit exceeded 的错误,则请编辑您的 MATLAB 预设项以增加堆大小。

  1. 主页选项卡的环境部分,点击预设

  2. 选择 MATLAB > 常规 > Java 堆内存

  3. 移动滑块以增加堆大小,然后点击确定

  4. 重新启动 MATLAB。

另请参阅

相关主题