diff

diff 以 unified diff 比较两个文本文件;同一模块提供的 patch 只有在源文件上下文仍然匹配时才应用修改。保存补丁和替换原文件都必须显式选择。

开发版本 1.1.3稳定别名: patch
lil-terminal

概览

可以把 diffpatch 看成一次完整的审核流程:先查看改动,需要时保存补丁,再写入独立目标,最后才决定是否替换源文件。

应用之前先审查改动

一个实用流程是 diff old.php new.php -o change.patch,然后执行 patch old.php change.patch。默认会生成独立的 .patched 文件;只有 -r 会替换源文件。

语法

lil-terminal
diff <old> <new> [options]

参考

diff <old> <new>

显示带三行上下文的 unified diff

diff <old> <new> -c <lines>

设置 0 到 20 行上下文

diff <old> <new> -q

只报告文件是否不同

diff <old> <new> -o <patch>

diff 保存为补丁文件

patch <file> <patch>

把补丁写入 <file>.patched

patch <file> <patch> -o <dst>

把结果写入其他文件

patch <file> <patch> -r

原子替换源文件

patch <file> <patch> -f

允许覆盖已有的非 -r 输出文件

检查并应用

diff old.php new.php -o change.patch 会保存已审查的差异,不修改两个源文件。patch old.php change.patch 默认创建独立的 .patched-o <dst> 指定其他目标,-r 才替换原文件。

限制与安全

每个文本文件最多 4 MiB、20000 行,二进制输入会被拒绝。patch 在写入前逐行验证上下文,因此针对其他源码版本的补丁会在修改前失败。

交互式 sandbox 预览

可直接在页面中运行预先准备的示例。结果已预先生成并在浏览器中显示;服务器不会执行任何终端命令。

显示带三行上下文的 unified diff

安装与管理

安装当前兼容版本。完整功能请选择 Base,精简包请选择 Minimum;已安装模块的更新请使用 upgrade。

Base 与 Minimum 是同一当前模块版本的两个包。

Base 包

安装包含本地参考和全部已发布模式的完整包。

install diff
Minimum 包

安装精简包。该包不包含本地参考;help <cmd> -i 会打开当前服务器参考。

install diff -m
精确公开版本

安装这个确切的已发布版本。

install diff -v 1.1.3
检查或升级

让 upgrade 检查兼容性,仅在需要时替换已安装块。

upgrade diff
删除模块

删除扩展块,不影响核心和其他模块。

install diff -u

示例

示例可复制,但网站不会执行。请先检查路径、权限和破坏性选项。

显示带三行上下文的 unified diff
cd \sandbox | diff workspace/original.txt workspace/updated.txt
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
设置 0 到 20 行上下文
diff workspace/original.txt workspace/updated.txt -c 1
--- workspace/original.txt
+++ workspace/updated.txt
@@ -1,2 +1,2 @@
-alpha
+alpha reviewed
只报告文件是否不同
diff workspace/original.txt workspace/updated.txt -q
Different  yes
Old        workspace/original.txt
New        workspace/updated.txt
把 diff 保存为补丁文件
diff workspace/original.txt workspace/updated.txt -o tmp/workspace.patch
Saved  tmp/workspace.patch
Size   148 B
把补丁写入 <file>.patched
patch workspace/original.txt tmp/workspace.patch
Source   workspace/original.txt
Patched  workspace/original.txt.patched

patchdiff 模块提供,可在不依赖系统 patch 程序的情况下受控地应用 unified diff

把结果写入其他文件
patch workspace/original.txt tmp/workspace.patch -o tmp/patched.txt
Source   workspace/original.txt
Patched  tmp/patched.txt

patchdiff 模块提供,可在不依赖系统 patch 程序的情况下受控地应用 unified diff

允许覆盖已有的非 -r 输出文件
patch workspace/original.txt tmp/workspace.patch -o tmp/current.txt -f
Source   workspace/original.txt
Patched  tmp/current.txt
Replace  explicit

patchdiff 模块提供,可在不依赖系统 patch 程序的情况下受控地应用 unified diff

原子替换源文件
patch workspace/original.txt tmp/workspace.patch -r
Source   workspace/original.txt
Patched  workspace/original.txt

patchdiff 模块提供,可在不依赖系统 patch 程序的情况下受控地应用 unified diff

处理缺失的比较文件
diff missing.txt workspace/updated.txt
未找到文件: missing.txt

本示例使用的文件: sandbox/workspace/original.txt

该示例使用受保护的 /sandbox/ 文档工作区中的文件或目录。

alpha
beta
gamma

相关文档

当前公开版本

v1.1.32026-08-08

首个稳定版本

diff 的当前稳定版本。diff 以 unified diff 比较两个文本文件;同一模块提供的 patch 只有在源文件上下文仍然匹配时才应用修改。