本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
手把手教你 Linux 下打 Patch
mylove136 · 243浏览 · 发布于2022-01-17 +关注

在项目中,如果和其他人一起维护一个项目,有时候别人修改了一些代码,更换 .c 文件也很麻烦,这时就需要用到 patch 了,别人只要发一个 patch ,你打上即可。

patch:补丁,用来显示两个文件不同的地方。

制作补丁有两种方法,diff 和 quilt,本文我们讨论 diff。

1、创建两个文件,a.c 和 b.c

a.c

#include <stdio.h> 

int main() 
{ 
 printf("Jason 20220116\r\n"); 
 return 0; 
}

    b.c

    #include <stdio.h> 
    
    int main() 
    { 
     printf("Jason 20220116\r\n"); 
     printf("test diff patch\r\n"); 
     return 0; 
    }

      2、生成补丁


      1. diff -u a.c b.c > test.patch 

      上图可以看到 test.patch 的内容,包括修改时间,修改的哪一行,都标注的很明显。

      diff

      比较两个文件的不同,然后记录下来,也就是所谓的 diff 补丁。

      diff [options] from-file to-file

        from-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 工具,请忽略补丁中的路径的第一级目录。

          注意:patch -p 后面是不能带负数 的。不使用 p 参数的时候,patch 命令会 忽略 任何目录,直接使用文件。

          多文件打 patch

          本文是两个文件做比较,打 patch,比较简单。如果是一个工程,有多个文件修改,需要在 diff 后面增加两个属性:

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

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


          相关推荐

          将Fedora 29升级到Fedora 30

          吴振华 · 703浏览 · 2019-05-14 22:00:02
          使用Nginx反向代理到go-fastdfs

          iamitnan · 724浏览 · 2019-05-23 13:42:00
          利用VLC搭建组播流服务器

          追忆似水年华 · 2692浏览 · 2019-06-14 11:27:06
          用Bash脚本监控Linux上的内存使用情况

          吴振华 · 974浏览 · 2019-06-24 11:27:02
          加载中

          0评论

          评论
          分类专栏
          小鸟云服务器
          扫码进入手机网页