适用范围
适合以纯文本保存文章、说明或脚本的协作,参考GNU diffutils/patch文档的基本机制。本文三行文稿与补丁描述均为原创教学例;不把Word修订、二进制工程或所有软件的历史记录视为同一格式。
全量稿与补丁保存的内容不同
完整v2保存本轮全部文稿。v1到v2的补丁保存差异,以及格式中可能包含的定位上下文;它让已持有旧稿的人应用修改,但不能假定每个未改段落都在补丁中。GNU说明patch将diff比较输出应用到原文件副本以形成修改版。
因此交接时先问对方有没有所需基线。如果没有,提供约定的完整稿比仅发一份变化片段更清楚。补丁也不是通用备份,保留变化记录还要保留它依赖的起点和顺序。
原创三行稿:同一个替换,两个不同结果
本例v1三行依次为“标题:纸船”“地点:书桌”“结尾:收好纸张”。补丁P只把第二行书桌改为窗边;目标v2应保留第一行纸船和第三行结尾。图右另一份稿W第一行却是“标题:风车”,第二、三行相同。
若只依据局部相同的“地点:书桌”把P用于W,得到的标题仍是风车,不能说已经恢复纸船v2。这个例子说明局部匹配与完整目标身份是不同检查对象;并非断言所有具体补丁工具都会接受这份输入。
上下文帮助定位,但不是全文身份保证
GNU文档说明带上下文的diff有助于在行号变化时找到相应位置,patch也可能尝试近似匹配,无法应用的片段可能被拒绝。因此行号有变化不必然失败,但没有报错也不能单独说明整体文稿就是预期那一版。
给每份补丁写清来源版本、目标版本、方向和范围,例如“纸船v1→v2,仅改地点字段”。若有多份依次修改,保留先后关系;不把v2→v3的变化当成直接从v1出发。这里不提供覆盖当前稿的命令。
在副本中应用,再检查完整结果
先保留当前工作稿和基线,选择独立副本进行处理,查看工具是否有拒绝片段或警告。之后检查全文的项目身份、未改内容与预期改动;三行示例应同时检查纸船、窗边、收好纸张三项。
若基线不明,先找原作者或提供方确认,不通过强制应用让报错消失。完成检查后产生新版本与说明,保留原输入和变化记录。复查结果是“这一份文稿按范围改对”,不能扩写成所有依赖文件都已更新。
操作步骤
- 注明补丁的来源版本、目标版本、方向和修改范围。
- 核对接收方实际基线,缺失时先提供或找回完整稿。
- 在独立副本应用并查看警告、拒绝片段。
- 对照预期完整结果,确认未改部分和新内容后保存新版本。
常见问答
补丁越小越说明修改简单吗?
不能,大小与格式、上下文和具体变动有关,不代表影响范围一定小。
工具没有报错就能替换当前稿吗?
仍应检查完整输出与预期项目、版本和内容是否相符。
只有补丁没有原稿能恢复全文吗?
通常不能保证。补丁可能只包含变动和局部上下文,缺少未变内容。
这与两个人合并修改一样吗?
不同。本文先解决单个补丁依赖哪个基线;多人分支合并还需处理彼此改动冲突。
参考依据
GNU:使用patch应用变化 · GNU · 核对日期 2026-10-30。patch把diff输出应用到原文件副本;近似匹配与无法应用片段的行为。
GNU:差异中的上下文 · GNU · 核对日期 2026-10-30。上下文用于定位改动,允许某些行号偏移;不构成完整文稿身份保证。