title: diff补丁格式

tags: 学习

categories: 学习

date: 2018-09-20 21:03:53

diff补丁格式

在Uboot学习中,接触到了打补丁这个操作,首先来学习下diff的patch文件格式.

命令参数

diff

  1. ”-u”:表示在比较结果中输出上下文中一些相同的行
  2. “-r“:表示递归比较各个子目录下的文件
  3. “-N“:将不存在的文件当作空文件
  4. “-w“:忽略空格的比较
  5. “-B“:忽略空行的比较

patch

  1. -pn,表示忽略diff命令中原文件路径中的几层父目录,-p1表示忽略第一个父目录

补丁文件内容

  1. 第一行,首先指定文件目录路径个比对参数
  2. 第二行,---.....表示原来的文件
  3. 第三行,+++....表示新文件
  4. 第四行一般是被 @@...@@包含的内容,比如@@ -206,8 +206,8 @@: -206表示原来的第206行,8表示总共8行,+206表示这是从新文件的206行,总共也有8行
  5. 文件内容中-表示删除这一行,+表示新增这一行,无+-表示保持原来的

制作补丁

使用命令 diff -urN oldFloder NewFloder > mypatch.diff,其中oldFloder为原旧文件,NewFloder为新文件,生成补丁mypatch.diff

应用补丁

使用命令patch 来应用补丁

例子

  1. 在OldFloder存在文件test.txt

    111111
    222222
    333333
    444444
    555555
  2. 在NewFloder存在文件test.txt

    111111 add here
    delete 222222 here
    33 change 33
    444444
    555555
  3. 为OldFloder创建补丁diff -urN OldFloder NewFloder > test.diff

  4. 查看下补丁的内容cat test.diff

    diff -urN OldFloder/test.txt NewFloder/test.txt
    --- OldFloder/test.txt 2018-09-20 21:15:40.576162357 +0800
    +++ NewFloder/test.txt 2018-09-20 21:17:02.747161577 +0800
    @@ -1,5 +1,5 @@
    -111111
    -222222
    -333333
    +111111 add here
    +delete 222222 here
    +33 change 33
    444444
    555555
  5. 应用补丁,patch -p1 < ../test.diff,命令前面的 -p1表示忽略路径中第1个父目录,我们这里是在OldFloder中应用的,所以是p

  6. 查看在OldFloder中的文件cat test.txt,可以发现已经应用成功

    111111 add here
    delete 222222 here
    33 change 33
    444444
    555555
  7. 例子解析

    diff -urN OldFloder/test.txt NewFloder/test.txt
    --- OldFloder/test.txt 2018-09-20 21:15:40.576162357 +0800
    +++ NewFloder/test.txt 2018-09-20 21:17:02.747161577 +0800
    @@ -1,5 +1,5 @@
    -111111
    -222222
    -333333
    +111111 add here
    +delete 222222 here
    +33 change 33
    444444
    555555
    • @@ -1,5 +1,5 @@表示原来文件的第1行开始,总共有5行,新文件从第1行开始,总共有5行
    • -111111表示删除原文件这一行
    • -222222表示删除原文这一行
    • -333333表示删除原文这一行
    • 后面三个+++....表示新增这一行
    • 接下去的44444455555表示不更改
    • 这么减了三行,去除三行,然后再保留原来的两行444444555555,总共还是5行

diff补丁格式的更多相关文章

  1. nginx补丁格式说明(CVE-2016-4450为例)

    nginx安全公告地址:http://nginx.org/en/security_advisories.html CVE-2016-4450:一个特定构造的数据包,可引发nginx引用空指针,导致ng ...

  2. u-boot(一)启动简介

    目录 u-boot(一)启动简介 启动概述 内部存储布局 Bootloader概述 内核启动参数 taggedlist 体验一下实际的Uboot U-boot的使用帮助 U-boot基本要求 titl ...

  3. 精《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #5 使用checkpatch.pl检查补丁的格式

    HACK #5 使用checkpatch.pl检查补丁的格式 本节介绍发布前检查补丁格式的方法.Linux内核是由多个开发者进行开发的.因此,为了保持补丁评估与源代码的可读性,按照统一的规则进行编写是 ...

  4. git apply、git am打补丁.diff 和 .patch【转】

    本文转载自:https://www.jianshu.com/p/e5d801b936b6 前提: 生成patch: git format-patch -M master 生成指定patch,0163b ...

  5. Git命令diff格式详解

    diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> ...

  6. uboot补丁的使用

    在u-boot跟linux内核(台湾叫核心)编译过程中, 有个东西叫补丁, 其实通过某些补丁文件, 可以知道它对原始的版本做过哪些修改, 比前面那个帖子的挨个文件挨个文件的修改, 显得要高级那么一丢丢 ...

  7. linux patch 格式与说明(收录)

    转:http://blog.chinaunix.net/uid-26813001-id-3282954.html 首先介绍一下diff和patch.在这里不会把man在线文档上所有的选项都介绍一下,那 ...

  8. Linux diff patch

    /***************************************************************************** * Linux diff patch * ...

  9. linux常用命令--diff

    diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> ...

随机推荐

  1. Civil 3D 2017本地化中VBA程序移植到2018版中

    中国本地化包简直就是一块鸡肋, 但对于某些朋友来说还真离不了: 可惜中国本地化包的推出一直滞后, 在最新版软件出来后1年多, 本地化还不一定能够出来, 即使出来了, 也只能是购买了速博服务的用户才能得 ...

  2. Sum of Consecutive Prime Numbers POJ - 2739 线性欧拉筛(线性欧拉筛证明)

    题意:给一个数 可以写出多少种  连续素数的合 思路:直接线性筛 筛素数 暴力找就行   (素数到n/2就可以停下了,优化一个常数) 其中:线性筛的证明参考:https://blog.csdn.net ...

  3. The Unique MST POJ - 1679 次小生成树prim

    求次小生成树思路: 先把最小生成树求出来  用一个Max[i][j] 数组把  i点到j 点的道路中 权值最大的那个记录下来 used数组记录该条边有没有被最小生成树使用过   把没有使用过的一条边加 ...

  4. codechef EBAIT Election Bait【欧几里得算法】

    题目分析: 欧几里得算法来处理一类分数问题,分数问题的形式如下 $\frac{a}{b} < \frac{p}{q} < \frac{c}{d}$ 当a=0时,答案等于$\frac{1}{ ...

  5. python查找读写文件

    import os ''' 跟据文件名称,后缀查找指定文件 path:传入的路径 filename:要查找的文件名 suffix:要查找的文件后缀 return :返回查找的文件路径 ''' file ...

  6. studio 连不上远程仓库的各种原因分析

    Unable to open the project 1.远程服务器挂了2.网络断了3.登录远程服务器的账号.密码错了4.远程仓库的url地址,被本地的hosts文件重定向了5.要下载远程仓库的某个j ...

  7. mysql Navicat 连接MySQL 8.0.11 出现2059错误

    https://www.cnblogs.com/lifan1998/p/9177731.html 原因 mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8 ...

  8. scrapy 发送post请求

    登录人人网为例 1.想要发送post请求,那么使用'scrapy.FormRequest'方法,可以方便的指定表单数据 2.如果想在爬虫一开始的时候就发送post请求,那么应该重写'start_req ...

  9. AGC030 简要题解

    A - Poisonous Cookies 题意 有\(A\)个能解毒的普通饼干,\(B\)个能解毒的美味饼干,\(C\)个有毒的美味饼干,求最多能吃多少个美味饼干,每次吃完有毒的饼干后要解毒后才能继 ...

  10. 洛谷P4907【CYH-01】小奔的国庆练习赛 :$A$换$B$ $problem$(DFS,剪枝)

    洛谷题目传送门 顺便提一下题意有一个地方不太清楚,就是如果输出No还要输出最少需要添加多少张牌才能满足要求.蒟蒻考完以后发现四个点Too short on line 2... 比较需要技巧的搜索 既然 ...