patch
文本处理
用法
patch -p1 < [file.patch]把 diff 真正打到文件上;-p 决定丢掉路径前面几层,而 git 的补丁因为有 a/ 和 b/ 前缀需要 -p1。
常用选项
| 选项 | 含义 |
|---|---|
| -pN | Strip N leading path components; git diffs need -p1 |
| -R | Apply the patch backwards to undo it |
| --dry-run | Test whether it applies and change nothing |
| -i | Read the patch from a file instead of standard input |
| -b | Keep a backup of every file it changes |
示例
patch -p1 < fix.patchApplies a git-style patch from the repo root.
patch -p1 -R < fix.patchUndoes it again.
patch -p1 --dry-run < fix.patchChecks it applies cleanly first.
它们本来就是用管道串起来用的。串三条往往比让一条命令做完所有事更短。
怎么看
- 方括号 [ ] 表示这部分可以不写。
- 省略号 … 表示可以写多个。
- 选项区分大小写——有些命令里 -r 和 -R 不是一回事。
常见问题
Q. patch 是做什么的?
把 diff 真正打到文件上;-p 决定丢掉路径前面几层,而 git 的补丁因为有 a/ 和 b/ 前缀需要 -p1。
Q. 怎么写?
patch -p1 < [file.patch] —— 方括号表示可以省略的部分。
Q. 值得记的选项有几个?
这里列了 5 个,完整列表在 man patch。这条命令属于文本处理。
相关命令
man 手册: man patch