diff命令生成补丁时指令为
命令:diff -Naur 路径1/file_old文件 路径2/file_new文件 > xxx.patch文件
最后需要用‘>’来输出重定向,生成一个补丁文件,打开补丁文件可以发现里面的改动.
-r如果是文件夹将递归的比较子文件,如果是单个文件可以不要这个参数.
-N:确保补丁文件能够正确处理已经创建或者删除的文件.
如果某个文件缺少了, 就当作是空文件来对比. 如果不使用本选项, 当diff发现旧代码或者新代码缺少文件时, 只简单的提示缺少文 件. 如果使用本选项, 会将新添加的文件全新打印出来作为新增的部分.
-u以统一格式创建补丁文件
-a输出为txt文件
所生成patch包在当前文件夹下。
patch命令打补丁时指令为
命令: patch -p1 < xxx.patch
最后要使用'<'输入重定向来把补丁文件导入需要打补丁的文件.
生成的补丁中, 路径信息包含了你的Linux源码根目录的名称, 但其他人的源码根目录可能是其它名字, 所以, 打补丁时, 要进入你的Linux源码根目录, 并且告诉patch工具, 请忽略补丁中的路径的第一级目录(参数-p1).
例如:给修改过的内核生成patch,然后用生成的patch给未修改过的内核打补丁
其中,目录linux-2.6.31.3为未修改过的内核,目录linux-2.6.31.3_1为修改过的内核
$ diff -uparN linux-2.6.31.3 linux-2.6.31.3_1/ > mypatch
$ cd linux-2.6.31.3
$ patch -p1 < mypatch
patch命令倒退回原版本的指令为
命令:patch -Rp1 < xxx.patch
执行它也是在打完xxx.patch的补丁的文件的基础上执行.
也如上文打补丁时一样,需要进入文件夹下卸载补丁.
当只有一个文件,不存在文件夹时,参数用-p0.
如果有两个目录
---old/huang/test.1
++new/huang/test.2
-p0:则从当前目录开始查找old文件夹,在去递归找test.1
-p1:也即忽略第一个目录,直接在当前目录下找找huang这个目录在去递归test.1,再用test.2对tes.1的patch文件去给test.1打补丁.