> 文本处理与搜索 > patch

patch: 将更改(补丁)应用到文件

patch 命令用于使用由 'diff' 命令生成的补丁文件 (.patch) 将更改应用到原始文件。此工具可以有效地执行修改源代码或更新配置文件的任务。

概述

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` 扩展名的文件。此文件包含补丁失败的部分,您可以参考它进行手动修改。
  • 在应用补丁之前,最好备份原始文件。

相关命令

功能上相似或经常一起使用的命令。


相同类别命令