概述
patch 是一个实用程序,它读取由 diff 命令生成的输出文件(也称为补丁文件),并将更改应用到原始文件。此补丁文件通常逐行记录了添加、删除或修改了哪些内容。patch 命令根据此信息修改原始文件。在版本控制系统(如 CVS、Git 等)出现之前,它是共享代码更改的主要方式。
主要特点
patch 命令的主要特点如下:
- 使用 diff 命令生成的补丁文件。
- 广泛用于源代码更新、配置文件修改等。
- 即使原始文件与补丁文件不完全一致,也能检测并应用部分更改。
- 还提供了撤销(reverse)更改的功能。
主要选项
我们根据目的对常用的 patch 命令选项进行了分组。
1) 应用和撤销补丁
2) 帮助
生成的命令:
请尝试组合命令。
描述:
`patch` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 patch 命令的各种使用示例来熟悉其功能。
应用补丁文件
patch -p1 -i my_changes.patch
使用 `my_changes.patch` 文件将更改应用到原始文件。`-p1` 选项忽略补丁文件的第一个目录路径。
撤销更改
patch -p1 -R -i my_changes.patch
使用 `-R` 选项将已应用的补丁内容恢复到原始状态。用于将补丁文件恢复到原始文件。
通过管道应用补丁
diff -u original_file.txt new_file.txt | patch -p0 original_file.txt
直接将 diff 命令的输出通过管道 (`|`) 传递给 patch 命令,无需创建补丁文件即可直接应用。
补丁应用预览
patch --dry-run -p1 -i my_changes.patch
使用 `--dry-run` 选项预先查看应用补丁时会发生什么变化。
安装
patch 大部分 Linux 发行版都默认包含。如果缺少此软件包,可以通过安装 `patch` 或 `diffutils` 软件包来获取,如下所示:
Debian/Ubuntu
sudo apt update && sudo apt install -y patch
RHEL/CentOS/Fedora
sudo dnf install -y patch
Arch Linux
sudo pacman -S --needed patch
提示与注意事项
整理了使用 patch 命令时需要注意的事项。
提示
- `diff -u` 生成的统一 (unified) 格式是最常见的补丁格式。使用此格式可以提高补丁应用的成功率。
- `-p` 选项在忽略补丁文件的路径信息时非常重要。您应该检查补丁文件的头部以指定正确的级别。例如,如果路径是 `a/src/file.c`,使用 `-p1` 将补丁应用到 `src/file.c`。
- 如果补丁应用失败,会生成一个 `.rej` 扩展名的文件。此文件包含补丁失败的部分,您可以参考它进行手动修改。
- 在应用补丁之前,最好备份原始文件。