• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. 未分类
  3. 正文

生成和打上patch的方法

2019年04月19日 67点热度 0人点赞 0条评论
2016-11-30 from--https://blog.csdn.net/cch___/article/details/53405450
在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。

首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。

使用linux命令diff就可以生成patch了。格式如下:

diff -Naur path/to/A_Project  path/to/B_Project > Project.patch

-N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。

-a 将所有文件都当作文本文件处理。

-u 输出每个修改前后的3行,也可以用-u5等指定输出更多上下文。

-r 递归。设置后diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

生成patch以后,在修改前A工程根目录下使用patch命令打上patch。

  1. $ cd path/to/A_Project
  2. $ patch -p1 < Project.patch

-p Num 忽略几层文件夹

为了解释 -p 参数,需要看看如下patch文件片段:

--- old/modules/pcitable       Mon Sep 27 11:03:56 1999                                          +++ new/modules/pcitable       Tue Dec 19 20:05:41 2000

如果使用参数 -p0,那就表示从当前目录找一个叫做old的文件夹,再在它下面寻找 modules/pcitable 文件来执行patch操作。
而如果使用参数 -p1,那就表示忽略第一层目录(即不管old),从当前目录寻找 modules 的文件夹,再在它下面找pcitable。

如果要取消补丁做出的更改,恢复旧版本,在A工程的根目录下执行以下命令,A工程就会恢复成没有打patch的样子:

$ patch -RE -p0 < Project.patch

由Git管理的工程处理patch的方法:

【生成patch】

分支master 上是没修改前的,分支patch 上是修改以后的打patch的。

1. 先切换到 patch分支

git checkout patch

2. 生成patch

git format-patch -M master

会生成一个文件名如:0002-Release-version-1.4.6.patch 的patch文件

【合并patch】

拿到patch以后,执行下面的命令:

git am 0002-Release-version-1.4.6.patch

如果不想直接commit,那么可以用下面这个命令打patch:

patch -p1 < 0002-Release-version-1.4.6.patch

然后手动commit。

标签: 暂无
最后更新:2019年04月19日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
BBR安装启用 安装docker mitmproxy 调试方法 Android SDK 版本选择 Perdition Mail代理服务器配置 HAProxy SSL代理 Openssl 中间人SSL代理 Stunnel SSL to SSL代理 NGINX反代IMAP配置 各种设备User Agent Torrent下载工具推荐 用 rar2john+hashcat 破解 RAR 文件密码 2020最好的Linux发行版 关闭新版chrome工具栏上拼图图标 Office 下载、安装、激活,有它就够了! Android 非官方的发行版 openwrt添加autoconf-archive FreeNAS 移动Jails到另一个池 move iocage Jails to another pool
NGINX反代IMAP配置Stunnel SSL to SSL代理Openssl 中间人SSL代理HAProxy SSL代理Perdition Mail代理服务器配置Android SDK 版本选择mitmproxy 调试方法安装dockerBBR安装启用
开源 NAS 操作系统不完全汇总 vim中delete(backspace)键不能向左删除 利用 Python + Selenium 自动化快速截图 硬盘灯一直亮 解决VM虚拟机导致硬盘灯常亮,很卡的问题 踩坑记:LinuxMint18字体变为楷体的修复 SELinux管理配置 在Docker容器中部署相互依赖的应用 CentOS上最佳的第三方仓库 Nginx下配置WordPress4伪静态规则及目录SEO(完美无错) git同一项目使用多个远程仓库 Centos7安装Oracle12c Ubuntu缩放比例设置 KeeFox 將 KeePass 密碼管理軟體整合進 Firefox 當中 将托管于 gitbook 的在线图书转换成 pdf 根据mac地址获取生产厂商 比较好用的PHP防注入漏洞过滤函数代码 IPIP.Net地址库格式分析 【插件】再谈网络运维人员的火狐(firefox)扩展
标签聚合
ssl docker blog e yum 密码 https chrome 镜像 下载 网卡 安装 git linux 路由 chromium

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS