Linux patch命令的-Np1选项具体有什么作用?
patch 命令
-Np1 选项功能详解 -Np1 是两个独立选项的合并简写,等价于分开写的 -N -p1,两个选项的作用分别如下:
-N(--forward 正向补丁选项)
作用是跳过已经应用过的补丁,仅应用还没打过的补丁内容:
- 如果当前文件版本已经比补丁要修改的版本更新,或者该补丁此前已经成功应用到当前文件上,patch命令不会尝试重复打补丁,也不会抛出冲突错误,直接跳过对应修改内容。
- 是日常打补丁时避免重复操作损坏文件的常用安全选项。
-p<数字>(路径剥离选项,此处为 -p1)
作用是控制补丁内记录的文件路径的剥离层级,让patch命令能准确定位到你本地要修改的文件:
- 数字代表要从补丁记录的文件路径开头,去掉多少层目录(以路径分隔符
/为分层标识) - 举个常见场景:git生成的diff补丁默认会给修改前的文件加
a/前缀、修改后的文件加b/前缀,补丁内的路径会写成a/src/main.c、b/src/main.c。此时你在项目根目录执行打补丁操作,用-p1就会剥离第一层的a/或b/,最终匹配到本地真实路径src/main.c,完成文件修改。 - 如果错误使用
-p0,patch会直接尝试查找a/src/main.c,会因为路径不存在报错。
补充说明
命令里的 -i file.patch 是指定要应用的补丁文件路径为file.patch,和上述选项无关联。
内容的提问来源于stack exchange,提问作者DavidS
相关产品推荐
相关产品推荐

