patch命令和diff命令

为君一笑 提交于 2020-03-01 07:00:36

diff命令:生成补丁包文件
格式: diff –Nuar 旧版本文件 新版本文件 > 补丁包文件名.patch

patch命令:打补丁命令
格式:patch –选项 <补丁包文件

例如:假设有version1.c(低版本)和version2.c(高版本)两个文件。可以使用“diff version1.c version2.c >test.patc”命令,生成补丁包“test.patch”
diff –Nuar version1.c version2.c > test.patch

利用cat查看补丁包文件内容会看到首行有旧版本、新版本文件目录,接着就是“-”或“<” 或“>” 或“+”跟着要修改的内容。
“<”/“-” :后面跟着要删除的内容。
“>”/“+” :后面跟着要增加的内容。

打补丁命令
-正向补丁 :patch –p0 < test.patch
-反向补丁 :patch –Rp0 < test.patch
(其中p代表剥离层级,0指略去patch文件0层目录,即从补丁包文件首行目录的根目录开始略去0层目录)

例如下:
1、建立目录x/xx/xxx
2、在xxx目录下新建文件test_old.c、test_new.c 文件内容如下:
在这里插入图片描述
在这里插入图片描述
3、然后在xx目录用diff命令生成补丁包文件xx.patch
在这里插入图片描述
4、我们用cat命令查看补丁包文件首两行内容如下:
在这里插入图片描述
我们把补丁包xx.patch文件移动到xxx目录下,当我们在xxx目录下用xx.patch应用补丁包文件打补丁时,因为补丁包文件首两行目录的根目录都是xxx,打补丁的时候如果不用剥离层级参数,查找补丁时便会从当前目录查找xxx目录,因为当前目录就是xxx目录了,所以我们需要使用p1参数才能正常完成打补丁,这样做的目的就是忽略xxx目录,即忽略上图中红色框的最左边一层目录。
5、运行命令:patch -p1 < xx.patch 回车,完成打补丁。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!