patch 命令生成器
生成 patch 命令,将 diff 应用到文件
patch 入门
## 什么是 patch?
`patch` 会把一个 diff(由 `diff -u` 产生)应用(apply)到一组文件上。它是分发和撤销源代码改动的经典工具。
## 如何使用
1. **提供补丁文件**,用 `-i` 指定(例如 `-i fix.patch`)。 2. **去除路径前缀**,用 `-p`(通常是 `-p 1`),让 diff 中的路径与你的目录树匹配。 3. **设置选项**(可选):`-R` 反向应用,`-d` 在其他目录中运行。 4. **复制并运行**:将生成的命令复制到终端中执行。
常用标志
### `-p NUM` 去掉前导斜杠 diff 中的文件路径常常形如 `a/src/app.c` 和 `b/src/app.c`。使用 `-p 1` 去掉前导的 `a/` / `b/` 前缀,让 `patch` 把目标定位到 `src/app.c`。
### `-i FILE` 从文件读取补丁 从磁盘上的文件应用补丁,而不是从 stdin 读取。
### `-d DIR` 切换目录 相当于先 `cd` 到 `DIR` 再运行 `patch`——从仓库根目录应用补丁时很方便。
### `-R` 反向 反向应用补丁,**撤销**之前应用过的改动。相当于 `git apply -R`。
### 验证 使用 `--dry-run`(本生成器未暴露此选项)可以在不修改文件的情况下试运行:
``` patch -p 1 --dry-run -i fix.patch ```
▶-p 1 是什么意思?
它会从补丁里每个文件名中去掉一个前导路径层级。`git` 产生的统一 diff 通常会给路径加上 `a/` 和 `b/` 前缀,`-p 1` 就是去掉它们。`-p0` 保持路径原样;`-p2` 去掉两个层级。
▶如何撤销已经应用过的补丁?
用同样的命令加上 `-R` 重新运行一次:`patch -R -p 1 -i fix.patch`。这会反向应用改动,把文件恢复成原来的样子。
如果这个工具对你有帮助的话,请考虑请我喝杯咖啡。
请给我买杯咖啡吧。