手把手教你 Linux 下打 Patch

本文转载自微信公众号「嵌入式Linux系统开发」,手把手教作者Jasonangel 。手把手教转载本文请联系嵌入式Linux系统开发公众号。手把手教
在项目中,手把手教如果和其他人一起维护一个项目,手把手教有时候别人修改了一些代码,手把手教更换 .c 文件也很麻烦,手把手教这时就需要用到 patch 了,手把手教别人只要发一个 patch ,手把手教你打上即可。手把手教
patch:补丁,手把手教用来显示两个文件不同的手把手教地方。
制作补丁有两种方法,手把手教diff 和 quilt,手把手教本文我们讨论 diff。手把手教
1、创建两个文件,a.c 和 b.c
a.c
#include <stdio.h> int main() { printf("Jason 20220116rn"); return 0; }b.c
#include <stdio.h> int main() { printf("Jason 20220116rn"); printf("test diff patchrn"); return 0; }2、生成补丁
diff -u a.c b.c > test.patch
上图可以看到 test.patch 的内容,包括修改时间,修改的哪一行,都标注的很明显。
diff
比较两个文件的不同,然后记录下来,云服务器也就是所谓的 diff 补丁。
diff [options] from-file to-filefrom-file:源文件
to-file:根据源文件修改后的文件
option:
-u 显示有差异行的前后几行(上下文), 默认是前后各 3 行, 这样, patch 中带有更多的信息
-p 显示代码所在的 c 函数的信息
-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况
-a 逐行比较文本文件
-r 比较子目录中的文件
打 patch
两个文件:需要打补丁的文件 a.c 和 patch 文件 test.patch
打补丁命令如下:
patch a.c < test.patch实际操作如下:

补充:
patch -RE < test.patch 取消 patch 对源文件的修改
patch -p1 < test.patch
p 表示跳过几级目录,0 标识不去掉为全路径,1 标识去掉第一层路径。路径信息包含了你的 Linux 源码根目录的名称,但其他人的源码根目录可能是其它名字,所以,打补丁时,要进入你的 Linux 源码根目录,并且告诉 patch 工具,请忽略补丁中的云南idc服务商路径的第一级目录。
注意:patch -p 后面是不能带负数 的。不使用 p 参数的时候,patch 命令会 忽略 任何目录,直接使用文件。
多文件打 patch
本文是两个文件做比较,打 patch,比较简单。如果是一个工程,有多个文件修改,需要在 diff 后面增加两个属性:
-r 递归地对比一个目录和它的所有子目录(即整个目录树).
-N 如果某个文件缺少了,就当作是空文件来对比. 如果不使用本选项,当 diff 发现旧代码或者新代码缺少文件时,只简单的提示缺少文件。如果使用本选项,会将新添加的文件全新打印出来作为新增的部分。
网站模板相关文章
联想电脑CPU风扇错误的解决方法(探索联想电脑CPU风扇错误原因及应对措施)
摘要:随着科技的进步,计算机在我们日常生活中扮演着越来越重要的角色。然而,有时候我们的计算机可能会遇到一些问题,比如联想电脑的CPU风扇错误。这个问题可能会导致计算机过热、性能下降甚至无...2025-11-05- 今天讨论一个开放式的话题,因为我也不知道答案,因此只能表达一下自己的观点,并听听朋友们的观点。最近和几个国产数据库厂商的朋友交流运维工具的事情,他们都觉得自己的数据库产品都有白屏运维工具,无需第三方运2025-11-05
- 复制HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Windows\Appinit_Dlls HKLM\Software\Wow2025-11-05
背景介绍近来一套业务系统,从库一直处于延迟状态,无法追上主库,导致业务风险较大。从资源上看,从库的CPU、IO、网络使用率较低,不存在服务器压力过高导致回放慢的情况;从库开启了并行回放;在从库上执行s2025-11-05- 摘要:华为电脑作为一款性能出色的产品,可以通过改装电源来进一步提升其性能。本文将介绍如何进行华为电脑的电源改装,以及通过这一改装措施如何提升华为电脑的性能,从而满足用户对高性能电脑的需求...2025-11-05
- 复制#ddif=/dev/sdaof=bak.img 1.2025-11-05

最新评论