生成patch和打patch总结

news/2024/7/8 16:22:55 标签: patch, 生成patch, 打patch

 

 

git生成patch和打patch

 

方法1.

git diff   xxxx >> mypatch

patch -p1 < mypatch

 

方法二.

           单个commit

git format-patch -1 1bbe3c8c197a35f79bfddaba099270a2e54ea9c7

patch文件拷贝到git同目录下

  检查patch文件

git apply --stat 0001-minor-fix.patch

  查看是否能应用成功

git apply --check 0001-minor-fix.patch

应用patch

git am -s < 0001-minor-fix.patch

或者patch -p1 < 0001-minor-fix.patch

 

 

 

 

 

Linux下生成patch和打patch

 

 

在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.

1.为单个文件生成补丁

$ diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c linux-2.6.28.8/net/sunrpc/svc.c

这条命令会产生类似如下的输出, 你将它重定向到一个文件中, 这个文件就是patch.

diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c 2009-03-17 08:50:04.000000000 +0800
+++ linux-2.6.28.8/net/sunrpc/svc.c 2009-03-30 19:18:41.859375000 +0800
@@ -1050,11 +1050,11 @@ svc_process(struct svc_rqst *rqstp)

参数详解:

-u 显示有差异行的前后几行(上下文), 默认是前后各3行, 这样, patch中带有更多的信息.

-p 显示代码所在的c函数的信息.

2.为多个文件生成补丁

$ diff -uprN linux-2.6.28.8.orig/net/sunrpc/ linux-2.6.28.8/net/sunrpc/

这条命令对比了linux-2.6.28.8.orig/net/sunrpc/和linux-2.6.28.8/net/sunrpc/两个目录下的所有源码差异.

参数详解:

-r 递归地对比一个目录和它的所有子目录(即整个目录树).

-N 如果某个文件缺少了, 就当作是空文件来对比. 如果不使用本选项, 当diff发现旧代码或者新代码缺少文件时, 只简单的提示缺少文件. 如果使用本选项, 会将新添加的文件全新打印出来作为新增的部分.

3.打补丁

生成的补丁中, 路径信息包含了你的Linux源码根目录的名称, 但其他人的源码根目录可能是其它名字, 所以, 打补丁时, 要进入你的Linux源码根目录, 并且告诉patch工具, 请忽略补丁中的路径的第一级目录(参数-p1).

$ patch -p1 < patch1.diff

diff命令必须在整个Linux源码的根目录的上一级目录中执行.

4. 示例

给修改过的内核生成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

 

 


http://www.niftyadmin.cn/n/1567982.html

相关文章

安卓系统添加dropbear实例

1. 平台&#xff1a;安卓5.1和安卓7.1上实测过&#xff0c;都能正常使用。 2. 需求&#xff1a;rk3399_安卓7.1系统添加ssh&#xff0c;可利用密码用户名登录,并且支持文件传输协议。 3. 移植步骤&#xff0c;把文件dropbear.tar.gz拷贝到源码externa/ 用命令tar -xzvf dropbea…

Android实现pppoe拨号上网实例

* 平台&#xff1a;RK3399 * 系统&#xff1a;安卓7.1>在电脑搭建服务端这里就不赘述了&#xff0c;可看下面的参考文章。编译生成pppoe可执行文件。下载rp-pppoe源吗。在安卓源码下创建external/pppoe目录。吧rp-pppoe源码下的src目录下的所有文件都拷贝到external/pppoe。…

Java集合框架中隐藏的设计套路

我们的世界不应该只有“胡萝卜” 进入正题之前容我先扯点别的。 最近突然想到了一个驴子和胡萝卜不得不说的故事。说是一个人坐在驴子背上&#xff0c;用一根长杆绑着一根胡萝卜&#xff0c;然后把胡萝卜悬到驴子的面前&#xff0c;驴子以为只要向前走一步就可以吃到胡萝卜&…

安卓7.1锁屏

系统&#xff1a;安卓7.1.2 问题&#xff1a;平台需要使用VPN功能&#xff0c;但是必须的设置PIN码&#xff0c;这就导致 &#xff0c; 1.在系统启动的过程中要求用户输入PIN&#xff0c;才能启动系统。 2.系统息屏后锁屏&#xff0c;打开也要求输入PIN码。有两种思路&#xff…

linux内核剖析-信号量

信号量 什么是信号量 信号量的使用主要是用来保护共享资源&#xff0c;使得资源在一个时刻只有一个进程&#xff08;线程&#xff09;所拥有。 信号量的值为正的时候&#xff0c;说明它空闲。所测试的线程可以锁定而使用它。若为0&#xff0c;说明它被占用&#xff0c;测试的线…

安卓四大组件之BroadCastReceiver

概述 Android四大核心组件指的是Activity,Service,ContentProvider, BroadCast Receiver,核心组件都是由Android系统进行管理和维护的&#xff0c;都要在清单文件中进行注册&#xff0c;广播接收者比较特殊&#xff0c;既可以在清单文件中注册&#xff0c;也可以直接使用代码注…

安卓笔记之SharedPreference

我们在开发中&#xff0c;应用程序会保存少量数据&#xff0c;例如一些字符串、一些标记或者一些配置文件&#xff0c;这时候如果去使用SQLite保存这些数据的话&#xff0c;难免会显得大材小用&#xff0c;用起来也不方便&#xff0c;对于这种信息&#xff0c;保存在SharedPref…

Android对话框总结

确认取消对话框&#xff1a; AlertDialog.Builder builder new Builder(this);//设置图标builder.setIcon(android.R.drawable.alert_dark_frame);//设置标题builder.setTitle("这是标题");//设置文本builder.setMessage("这是内容"); //设置确定按钮bui…