Linux生成和打上patch的方法

转载 2017年01月03日 16:23:11

在团队开发的过程中,经常需要生成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。

$ cd path/to/A_Project
$ 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。


linux patch 命令小结

说到patch命令,就不得不提到diff命令,也就是制作patch的必要工具。diff命令,在制作patch文件的时候,基本上只需要使用到diff -Nau 这个参数,如果比较的是文件夹,还要加上...
  • wh_19910525
  • wh_19910525
  • 2012年04月26日 20:25
  • 73259

Linux下生成patch和打patch

通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源...
  • dl0914791011
  • dl0914791011
  • 2013年12月13日 10:58
  • 17573

摘录:Linux打Patch的方法

作为程序员,了解diff&patch命 令是非常必要的。比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成 员。项目成员通...
  • sunyubo458
  • sunyubo458
  • 2011年08月12日 09:46
  • 27083

Linux下生成patch和打patch

通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源...
  • MENGHUANBEIKE
  • MENGHUANBEIKE
  • 2017年04月15日 22:25
  • 364

Linux打Patch的方法

作为程序员,了解diff&patch命 令是非常必要的。比如说我们发现某个项目有bug代码,而自己又没有svn的提交权限,那么此时最合适的解决方法就是用diff命令做一个补丁发给项目成 员。项目成员通...
  • u013478557
  • u013478557
  • 2015年06月16日 17:24
  • 536

Linux下patch打补丁命令

此命令用于为特定软件包打补丁,他使用diff命令对源文件进行操作。 基本命令语法: patch [-R] {-p(n)} [--dry-run] p:为path的缩写。 n:指将patch文件中的p...
  • MAOTIANWANG
  • MAOTIANWANG
  • 2013年09月05日 09:28
  • 16891

linux patch

Patch的主要用途是给代码打补丁,修正已知的错误,或者作为一种调试手段来调试有问题的代码,发现问题和验证修正的结果。 Patch 过程分三个大的步骤:一是用diff工具比较新旧代码,生成patch...
  • u010781856
  • u010781856
  • 2015年01月04日 10:49
  • 210

linux下patch文件使用

初识patch还是和Z同事沟通问题时认识的,回想起已经近半年
  • huguangshanse00
  • huguangshanse00
  • 2014年06月29日 11:20
  • 7389

Linux下使用diff和patch制作及打补丁(已经实践可行!)

在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。 通过diff命令比较出新旧版本之间的差异,并以pa...
  • tao_627
  • tao_627
  • 2016年10月26日 22:37
  • 2175

如何制作LINUX的patch文件及如何打patch

如何制作LINUX的patch文件及如何打patch 对某个版本的Linux内核做了修改以后,如果希望发布出去给别人用,那么就需要制作针对此版本的patch文件。 patch文件也叫补丁,就是一个...
  • zhenwenxian
  • zhenwenxian
  • 2012年12月23日 17:03
  • 19570
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux生成和打上patch的方法
举报原因:
原因补充:

(最多只允许输入30个字)