解决三路文本合并冲突
准备祖先、本地与远端文本,逐处选择冲突处理方式,再把保存的输出交回原有工作流程。
合并三个版本
以共同祖先合并本地与远端编辑,查看冲突并保存完整选择结果。
手动准备三份角色
通过现有来源应用或审查流程,分别导出共同祖先、本地与远端副本。保留原文件,为每份选择正确角色;工作台不执行仓库或 CLI 调用。
选择文件时只显示元信息;点击运行开始整个 10 秒任务期,包含读取。原 CRLF/CR/LF 或末尾无换行重要时使用原生文件,文本框编辑可能统一换行。
恢复与保存
确认共同祖先与三份角色;超限时减少行比较工作量后重试。仍有冲突时保留“未解决”标识,直到每处冲突都有明确选择。
逐项选择冲突,明确保留未解决状态
可选未解决、本地、祖先、远端、本地后远端、远端后本地或自定义文本;空自定义替换表示明确删除。应用选择会重新计算完整输出,仅当前有效冲突 ID 可用。
输入中看似冲突标记的行仍是普通文本;生成的 LOCAL/BASE/REMOTE 标记使用 LF,无末尾换行片段所需的分隔插入会记录在完整报告中。
| 状态 | 文本文件 | 核对事项 |
|---|---|---|
| 仍有未解决冲突 | conflicted.txt | 保留标记,检查每处祖先/本地/远端片段 |
| 已应用全部选择 | merged.txt | 在接收应用核对选定文本 |
| 任一已完成状态 | merge-report.json | 保留来源身份、冲突选择及 BOM 策略 |
- 决定哪一方修改了片段之前,先核对共同祖先。
- 明确选择每处冲突;需要删除时可选择空自定义替换。
- 来源变化后检查新冲突 ID,重新填写选择。
- 保存完整文本与报告,再在原流程手动检查或导入文本。
空源与 BOM 都是明确选择
可以。三个角色均允许空粘贴文本或真实零字节文件;三份空源产生已解决的空文本,不会启用其他隐藏输入。
每份来源移除并记录一个开头 BOM;可取祖先、本地、远端或不加,默认祖先。沿用来源时,仅在该来源原本含 BOM 时添加;完整文本复制与下载共同遵循所选策略,保留相同开头 BOM,UTF-8 字节一致。
字节、行 token、比较、自定义选择与完整输出限制见当前工具参考;预览不替代完整制品。
使用相同来源恢复
确认共同祖先与三份角色;超限时减少行比较工作量后重试。仍有冲突时保留“未解决”标识,直到每处冲突都有明确选择。 空源合法;取消后可用相同角色重跑。来源改变后,应检查新的冲突 ID 并重新选择处理方式。
来源改变会清除报告与选择,即使之后的新合并再次使用同一冲突 ID;取消或超时的任务不发布迟到结果。
参考资料
- 三份原文与第四输出面板需求
作者要求 mine/theirs/ancestor 与合并输出,并提到调用问题;此有界工作台支持手动导入文本版本,不修复或调用 Git 集成。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
合并文本文件的三个版本以共同祖先合并本地与远端编辑,查看冲突并保存完整选择结果。
以共同祖先合并本地与远端编辑,查看冲突并保存完整选择结果。
操作步骤
- 在独立面板打开或粘贴共同祖先、本地版本及远端版本。
- 点击运行,在整个任务时限内读取有效来源。
- 查看合并输出和每处冲突的三个版本内容。
- 选择处理方式或编辑自定义文本;任一源变化时清除旧选择。
- 全部解决后保存 merged.txt;未解决时保存 conflicted.txt,并同时保存 merge-report.json。
- 把审查后的保存结果手动导入原编辑器或流程,保留原文件与合并报告。
能力与限制
- 分别提供 base、local 和 remote。每份严格 UTF-8 文本最多 1 MiB、4,000 个精确行 token。base 行数 ×(local 行数 + remote 行数)最多 4,000,000 个比较单元。
- 固定使用 node-diff3 3.2.1 的 Hunt–McIlroy 行合并。CRLF、CR、LF 及末尾无换行均保留在行 token 中。要保留原换行请打开文件;文本框编辑可能统一换行。
- 相同编辑只出现一次。未解决冲突保留 LOCAL/BASE/REMOTE 标记并明确显示未解决;全部解决后下载 merged.txt。报告与结果文本合计最多 8 MiB。
- 每个冲突可选本地、祖先、远端、本地后远端、远端后本地,或最多 1 MiB 的自定义 UTF-8 文本。复制入 Worker 前的紧凑处理选项最多 8 MiB,活动选择仍受完整输出上限约束。默认未解决。输出 BOM 可取 base/local/remote 或不加;默认取 base。
- 冲突标记使用 LF。遇到无末尾换行的片段时按需插入分隔 LF,并记录 UTF-16 位置。不进行语法语义合并,也不修改仓库。
- 每个角色使用粘贴文本或恰好一份所选 UTF-8 文件;空文本与真实零字节文件都是合法合并来源。无效的所选文件不会回退到隐藏粘贴内容;文件名标签最多 512 个 UTF-8 字节。
- 移除并记录一个开头 BOM,粘贴输入亦如此。拒绝无效 UTF-8、不成对的 Unicode 代理字符;输入在本浏览器处理。
- 整个任务固定 10 秒时限或取消后不提供部分制品。修正输入后重试,每次任务使用新 Worker。
- 文件选择仅读取元信息;整个固定 10 秒任务期从点击运行开始,包含引擎加载、输入检查、读取、导入和合并。取消或被拒绝的请求不发布部分复制或下载。
- 冲突 ID 必须属于当前输出;不存在或未启用的 ID,以及附在其他选择上的自定义文本都会被拒绝。三个各 4,000 行角色最多产生 12,000 个 ID;任一来源改变会取消活动任务,并清除旧选择与结果。
- 第四面板是有界输出预览;复制保留全部合并文本,merge-report.json 保留所有块、冲突、来源与选择。完整复制与下载都保留所选开头 BOM,UTF-8 字节一致,并报告精确字节数与 SHA-256。
- 工作台接受手动导出的来源,生成供手动导入的文件;不调用 Git CLI/mergetool、不修改仓库、不验证代码语义,也不自动标记仓库冲突已解决。内容与名称仅留在当前标签页的有界内存中。