生成patch的方法:
使用diff命令生成patch
diff -uprN org chg > patch2
命令解释:
上面的命令表示,将chg文件夹基于org文件夹操作修改的内容生成一个patch2
简单点的就是:org文件夹是你的原始文件夹,chg文件夹是你在org文件夹的文件夹上面做了修改。那么现在你想把这些修改提取出来。就可以通过上面的命令把修改的内容放patch2里面。
参数解释:
-uprN 多个文件的patch合并在一起
org 原始的代码
chg 修改后的代码
patch2 生成的patch文件
使用patch的方法:
将上面的patch2进行使用
patch -p1 < patch2
命令说明:
-p1 去掉patch2里面的第一级目录
patch2 我们需要使用的补丁文件
关于-p1这个选项,多说两句
一般patch里面的内容如下:
--- a/drivers/mxc/ipu3/ipu_common.c
+++ b/drivers/mxc/ipu3/ipu_common.c
上面的内容表示patch是针对文件夹a和文件夹b生成的。
-p1就表示去掉b这一层文件夹,那么也就是说,你在当前目录下执行ls的时候,必须要看到drivers这个文件夹
-p2就表示去掉b/drivers这一层文件夹,你在当前目录下执行ls的时候,必须要看到mxc这个文件夹
在使用补丁的时候,最好-p1.因为你-p2时,patch文件就只能应用到drivers这个文件夹里面了。举例如下:
如果你patch文件同时包含如下信息:
--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
--- a/drivers/mxc/ipu3/ipu_common.c
+++ b/drivers/mxc/ipu3/ipu_common.c
你使用-p1,那么你patch就可以应用到b目录下的所有文件
如果你使用-p2,如果你在drivers目录下,那么你补丁就只能应用到mxc/ipu3/ipu_common.c文件
如果你在arch目录下,那么你补丁就只能应用到arm/boot/dts/imx6qdl-sabresd.dtsi文件
如果我们打了patch,后面想把patch给撤销掉,可以使用如下命令:
patch -p1 -R < patch2