原理

现在有一个文件file1,通过修改file1得到了文件file2,然后用diff工具比较file1和file2的差异,得到一个补丁文件file.patch,它记录了两个文件的不同之处,patch工具就可以根据这个补丁文件修改file1,从而得到file2。

 

相关工具

diff

diff [options] 源文件 目标文件

diff用于列出两个文件的不同之处,指示如何由源文件变为目标文件,可以用重定向生成补丁文件,注意:diff只能用于比较文本文件。常用选项:

-c,输出一个基于上下文的diff,即提供每处修改的前后机会内容,这样patch命令可以在打补丁前验证上下文是否匹配,而补丁文件也更容易阅读。

-b,忽略空格引起的变化

-B,忽略插入/删除空行引起的变化

-i,忽略大小写

-N,在比较目录时,如果一个文件只在其中一个目录中找到,那它被视为在第二个目录中是一个空文件

-r,在比较目录时,递归比较所有子目录

-u,使用统一的输出格式

patch

patch [options]  源文件 补丁文件

patch用于根据补丁文件修改源文件,它会直接改动源文件,打补丁前请注意备份。常用选项:

-R,反向补丁,将已经打了补丁的文件恢复到原来的样子

-p[num],忽略前几层目录,目录的层数由num指定

例1:比较两个文件

file1:

this is line1
this is line2
this is line3
this is line4

file2:

this is line1
this is line2 hello
this is line3
this is line4
this is line5

执行:

diff file1 file2 > file.patch

生成补丁文件file.patch:

2c2
< this is line2
---
> this is line2 hello
4a5
> this is line5

对file1打补丁:

patch file1 file.patch

file1的内容就变成了file2,如果想把file1变为原来的样子,执行:

patch -R file1 file.patch

 

例2:比较两个目录

在工作路径下有两个目录:doc1和doc2。

执行diff命令,生成补丁文件patch:

diff -Nur doc1 doc2 > doc.patch

用patch工具为doc1打补丁:

bash# cd doc1
bash# patch -p1 < ../doc.patch

参考:

用Diff和Patch工具维护源码: https://www.ibm.com/developerworks/cn/linux/l-diffp/

补丁的制作和使用:diff和patch相关推荐

  1. 使用diff和patch制作及打补丁

    在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁. 首先介绍一下diff和patch. 1.diff --- ...

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

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

  3. linux下diff、patch制作补丁

    http://blog.csdn.net/goldfighter/article/details/6150309 学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,google或者ba ...

  4. 如何补丁1个文件(linux diff patch)

    目的:为文件打补丁 OS:Linux 方法: diff -uN patch --p0 具体例子: file 内容OLD 打补丁为新文件file,内容NEW 方法: 1 分别创建file, fileNe ...

  5. linux打patch和patch制作的方法(diff和patch命令)

    linux下常用的补丁命令有两个:diff和patch,diff用来制作补丁文件,patch用来给源文件打补丁. 一.diff命令 格式:$ diff [options] src_file dest_ ...

  6. 代码打补丁的利器——diff和patch

    一般来说,如果我们在研发过程中需要对代码进行修改,是不需要通过打补丁的方式的,因为我们可以直接改动文件即可.但是如果针对一款要上线的产品,我们总不能在研发的电脑上编译通过后直接发布到线上的.(转载请指 ...

  7. git apply、git am打补丁.diff 和 .patch

    前提: 生成patch: git format-patch -M master 生成指定patch,0163bed3bf59ae74c36cc5138b4c24f1556d8304是commit id ...

  8. Git补丁简单用法介绍(打补丁.diff 和 .patch 和 git apply、git am应用)

    打补丁.diff 和 .patch 和 git apply.git am应用 生成patch git format-patch -M master 生成指定patch,afc425592dc7dde9 ...

  9. diff和patch 打补丁

    在Linux环境下,有两个工具用来给project打补丁,即diff和patch diff          diff具有比较功能.可以使用man命令查看其使用方法. NAME        diff ...

最新文章

  1. 喀什市2021年高考成绩查询,2021年新疆高考查分网站查分网址:http://www.xjzk.gov.cn/...
  2. 每日一皮:雷神索尔的锤子为什么这么重?
  3. RocketMQ主机磁盘空间有限,如何无限期延长消息存储?
  4. 你是我一首唱不完的歌
  5. Vivado提高综合和实现的速度
  6. 支付宝2019年账单周一见 你准备好了吗?
  7. Java 笔试强训 牛客网选择编程题 01
  8. Win8右键反应慢的原因与解决办法
  9. wamp5环境配置基础教程
  10. Python自动登录校园网
  11. Leetcode 刷题 - 排序(day2)_桶排序_Top K Frequent Elements
  12. WPS服务器维护,wps卸载云服务器
  13. sql服务器状态已停止,SQL SERVER 2008 SSMS - SQL Server Management Studio 已停止工作
  14. 玩期货风险大吗(玩期货有风险吗)
  15. android 原生请求权限代码
  16. 2019年秋季学期实验室安全考试1
  17. h3c如何配置acl命令
  18. 2022企业级BI平台白皮书(附下载)
  19. Matlab基本函数-fix函数
  20. 字符串匹配值Sunday算法

热门文章

  1. 计算机主机装机步骤,电脑组装步骤详细教程之裸机点亮 再将DIY硬件装入主机箱...
  2. 【微服务 从0开始 】Spring Cloud 简单搭建一个微服务项目
  3. 2020云上广交会VR全景整体解决方案
  4. 国产W806 I2C硬件模块
  5. 发力5G,AICS或将打造全新智联时代!
  6. 昆山农商行用户画像——DataExplore
  7. Springboot+Vue成果统一管理系统
  8. Python爬取双色球数据进行分析
  9. sr-only是什么意思
  10. 安卓系统的指纹解锁_浅谈手机指纹识别的发展:从鸡肋到必备