要在合并修改前在 Mac 上比较两个文本文件,请先为这两个版本分别创建副本,然后使用终端的 diff 命令或 Visual Studio Code、BBEdit 等可视化对比工具检查它们的差异。对比会显示发生了哪些变化;你仍需要决定保留哪些修改,并将合并后的结果另存为新文件,直到检查无误为止。

准备两个版本

将这两个文件放在易于查找的位置,例如桌面或临时文件夹。确认哪个是较早的版本或基础版本,哪个包含较新的修改。如果两个文件是独立进行修改的,请注意两者都不一定代表正确的最终版本。

在合并之前,请在“访达”中复制原文件,或在支持该功能的应用程序中使用文件 > 复制。为副本赋予明确的名称,例如 draft-original.txt、draft-edited.txt 以及随后的 draft-merged.txt。这样,如果你不小心覆盖了内容,还有挽回的余地。检查这两个文件是否都是纯文本,并确认对比的是目标文件对;带格式的文档可能包含纯文本对比无法呈现的结构。

在终端中使用 diff 对比文件

要使用 macOS 的命令行进行快速对比,请打开“终端”并输入 diff -u ,命令后留一个空格。将第一个文件从“访达”拖入终端窗口,输入一个空格,再将第二个文件拖入,然后按 Return 键。该命令会对比两个文件的内容,并输出带有上下文的统一差异(unified difference)。第一个路径是起始版本,第二个是与之对比的版本。Apple 的 diff 手册页详细说明了该命令及其统一输出选项。

diff -u /path/to/first.txt /path/to/second.txt

在输出中,以 - 开头的行表示存在于第一个文件中但不存在于第二个文件中;以 + 开头的行表示存在于第二个文件中但不存在于第一个文件中。没有任何标记的行是上下文内容。以 @@ 开头的标题指出了发生更改区域的大致行号范围。如果终端没有输出任何差异,则说明文件对比结果完全相同。如果结果显示文件存在差异但没有显示可读的文本行,可能意味着输入内容未被视作普通文本处理。

此输出仅作为核对辅助,而非合并后的文档。不要将 diff 标记粘贴到最终文件中。结合上下文通读每个更改块,决定哪些内容应保留在合并版本中,然后在文本编辑器中编辑副本并以新名称保存。如果文件中有许多重叠的修改,使用可视化 diff 编辑器通常更容易查看。

使用可视化对比便于审查

在 Visual Studio Code 中,打开一个文件,然后使用命令面板并选择 File: Compare Active File With...(文件:将活动文件与……进行比较)来选择另一个文件。或者,在资源管理器中右键点击一个文件并选择 Select for Compare(选择以进行比较),然后右键点击另一个文件并选择 Compare with Selected(与已选项目进行比较)。VS Code 会显示一个 diff 编辑器以供审查更改。其文档还介绍了如何将当前活动文件与已保存版本或剪贴板内容进行对比。Visual Studio Code 的文件对比指南列出了这些选项。

BBEdit 提供了另一种适用于 Mac 的途径:选择 Search > Find Differences,在对比窗口中提供这两个文件,然后开始对比。其当前的功能对比表将文件对比和字符级差异显示列为支持特性。BBEdit 的功能对比表介绍了可用的 Find Differences 功能。

无论使用哪款应用程序,都请从头到尾仔细检查对比结果。添加或删除行时,相似的文本块可能会上下移动,因此不要以为视觉上相邻的更改就属于同一次编辑。此外,还要检查标点符号、空行、拼写和重复段落:微小的差异都可能会改变文意或格式。

审慎合并并验证保存的结果

逐项查看每个更改,并选择是保留第一个版本、第二个版本还是两者的组合。当两个文件修改了同一个句子或段落时,请结合上下文同时阅读这两处的修改,并自行判断解决冲突。双文件对比只能找出差异,无法判断独立编辑的版本中哪一个表达了预期的最终含义。

将合并后的文本保存到第三个文件中。然后重新打开该保存的文件,浏览你修改过的区域。如果你想确认它是否与某个源文件完全一致,可以使用相同的工具将保存的结果与该源文件进行对比。在对结果完全满意之前,请保留原始文件。

此工作流程适用于两个文本文件。可视化 diff 并不一定等同于三方合并:当两个人编辑了同一个基础版本时,你可能还需要该基础版本来区分独立的添加内容与冲突的修改。如果文件是富文本或特定应用程序的专有文档,请尽量使用该文档应用程序自带的对比或修订功能;将其展平或导出为纯文本可能会丢失格式或结构。

来源