首页 > 其他分享 >diff 和 patch 命令(打补丁)

diff 和 patch 命令(打补丁)

时间:2023-07-17 17:56:02浏览次数:39  
标签:文件 打补丁 -- patch ignore file 格式 diff

命令详解

diff 命令

diff 就是用在比对两个文件之间的差异的,并且是以行为单位来比对的!一般是用在 ASCII 纯文本文件的比对上。
由于是以行为比对的单位,因此 diff 通常是用在同一的文件(或软件)的新旧版本差异上!”

命令格式

diff [OPTION]  from-file  to-file > batch-file
  • from-file :一个文件名(或文件夹),作为原始比对文件的文件名;
  • to-file :一个文件名(或文件夹),作为目的比对文件的文件名;
  • batch-file :补丁(差异)文件,可选的。

注意,from-file 或 to-file 可以 - 取代,这个 - 代表“Standard input”之意

选项说明

-a, --text:所有的文件都视为文本文件来逐行比较
-B, --ignore-blank-lines:忽略插入删除空行引起的变化
-b, --ignore-space-change:忽略因空白符数量不同造成的差异
-C NUM
-c, --context[=NUM]:使用上下文格式输出,显示异行处上下指定数量的行(默认为 3 行)
--color[=WHEN]:将输出着色;WHEN 可取值 never、always 或 auto(默认值)
-D, --ifdef=NAME:输出与 "#ifdef NAME" 不同的合并文件
-d, --minimal:改变算法找出一组更小的变更。这会使 diff 变慢
-E, --ignore-tab-expansion:忽略因 Tab 扩展引起的更改
-e, --ed:输出为一个有效的 ed 脚本
-F, --show-function-line=RE:显示匹配 RE 的前面的行
--from-file=FILE1:将 FILE 1 与所有文件进行比较;FILE 1 可以是一个目录
--GTYPE-group-format=GFMT
	用组格式 GFMT 格式化类型为 GTYPE 的输入组
--line-format=LFMT
    用格式 LFMT 格式化所有输入行
--LTYPE-line-format=LFMT
 	用行格式 LFMT 格式化类型为 LTYPE 的输入行
	上面三个选项和响应的格式提供了对输出的细粒度控制。
	行类型 LTYPE 可取值 old、new 或 unchanged,组类型 GTYPE 可取值 LTYPE 或 changed。
	组格式 GFMT 特含如下内容:
	%< FILE1 中的行
	%> FILE2 中的行
	%= FILE1 和 FILE2 中共有的行
	%[-][WIDTH][.[PREC]]{doxX}LETTER
		使用 printf 输出风格修饰 LETTER,LETTER 使用如下字母表示新组,下面的小写字母表示旧组
		F	首行行号
        L	尾行行号
        N	行数 = L-F+1
        E	等于 F-1
        M	等于 L+1
        %(A=B?T:E)
              if A equals B then T else E
	行格式 LFMT  特含如下内容:
	%L	行的内容
	%l	行的内容,不包括任何尾随的换行符
	%[-][WIDTH][.[PREC]]{doxX}n
		使用 printf 风格修饰输入行号 n
	组格式 GFMT 和行格式 LFMT 共有的内容:
	%%			表示百分号 %
	%c'C'		表示大写字母 C
	%c'\OOO'	表示码值为八进制 000 的字符
	C			其他字符
--help:显示帮助信息并退出
--horizon-lines=NUM:保持共有前缀和后缀的 NUM 行
-I, --ignore-matching-lines=RE:忽略匹配正则表达式 RE 的行
-i, --ignore-case:忽略大小写
--ignore-file-name-case:比较文件名时忽略大小写
-l, --paginate:将结果交由 pr 程序来分页
--label LABEL:输出比较结果时使用 LABEL 代替文件名和时间戳
--left-column:只输出公共行的左列
-N, --new-file:将缺席文件视为空文件。在比较目录时,若文件 A 仅出现在某个目录中,预设会显示:Only in 目录:文件 A。若使用 -N 参数,则 diff 会将文件 A 与一个空白的文件比较
-n, --rcs:将比较结果以 RCS 的格式来显示
--no-dereference:不解析
--no-ignore-file-name-case:比较文件名时大小写敏感
--normal:使用正常格式输出比较结果。为默认输出格式
-p, --show-c-function:显示每个更改在哪个 C 函数中
--palette=PALETTE:当使用选项 --color 时,指定要使用的颜色。PALETTE 是使用冒号分隔的终端支持的能力列表
-q, --brief:仅报告文件是否相异,忽略差别的细节
-r, --recursive:当比较目录时,递归比较子目录
-S, --starting-file=FILE:当比较目录时,由 FILE 开始。这用于继续中断的比较
-s, --report-identical-files:当两个文件相同时报告
--speed-large-files:使用启发规则加速操作那些有许多离散的小差异的大文件
--strip-trailing-cr:去掉输入行尾的回车符 CR
--suppress-common-lines:在并列格式中不印出公共行
-T, --initial-tab:在每行前面加上 Tab 以便对齐
-t, --expand-tabs:在输出时将 Tab 扩展为空格
--tabsize=NUM:一个 Tab 表示 NUM(默认 8) 个空格
--to-file=FILE2:将所有文件与 FILE2 进行比较;FILE2 可以是一个目录
-U NUM
-u, --unified[=NUM]:使用合并格式输出,输出 NUM(默认 3)行的统一上下文
--unidirectional-new-file:将缺席的第一批文件视为空文件
-v, --version:输出版本信息并退出
-W, --width=NUM:使用 -y 选项采用列格式输出时,指定栏宽。缺省为 130
-w, --ignore-all-space:在比较行的时候忽略空白符
-y, --side-by-side:使用并格式输出两列
 -Z, --ignore-trailing-space:忽略行尾的空白符

patch命令

  • 作用:当diff比较新旧两个文件的差异后,将比较结果保存到patch文件里,然后使用patch命令利用补丁文件升级旧文件(打补丁),或把新文件回退成旧文件(卸载补丁):
命令格式
patch [OPTIONS] [ORIGFILE] < [PATCHFILE]]

[OPTIONS]:
--dry-run :模拟打补丁,不实际操作
-p N :指定要去掉的路径层数
-R :递归处理子目录中的文件
--verbose :显示详细的处理信息
--ignore-whitespace :忽略空格差异
--ignore-tab-expansion :忽略制表符扩展
--ignore-trailing-space :忽略行末空格的差异
--ignore-space-change :忽略空格的差异
--ignore-case :忽略大小写的差异
--forward :向前打补丁
--backward :向后打补丁
--strip N :去掉前缀 N 的路径名
--numeric-owner :使用数字来表示文件所有者和组
--exclude=file :从打补丁文件中排除文件
--fuzz=N :表示当某些行匹配多个修补程序时,可以放宽匹配的要求程度
--force :不检查补丁文件的正确性
--help :显示帮助信息
--version :显示版本信息

打补丁的一般流程

参考博客

  • diff命令:生成补丁包文件
    • 格式: diff –Nuar 旧版本文件 新版本文件 > 补丁包文件名.patch
  • patch命令:打补丁命令
    • 格式:patch –选项 <补丁包文件

例如
假设有version1.c(低版本)和version2.c(高版本)两个文件。

  1. 可以使用 diff 命令,生成补丁包:diff –Nuar version1.c version2.c > test.patch
  2. 利用 cat 查看补丁包文件内容会看到首行有旧版本、新版本文件目录,接着就是“-”或“<” 或“>” 或“+”跟着要修改的内容。
    • “<”/“-” :后面跟着要删除的内容。
    • “>”/“+” :后面跟着要增加的内容。
  3. 打补丁命令
    • 正向补丁 :patch –p0 < test.patch
    • 反向补丁(还原) :patch –Rp0 < test.patch
      (其中p代表剥离层级,0指略去patch文件0层目录,即从补丁包文件首行目录的根目录开始略去0层目录)

标签:文件,打补丁,--,patch,ignore,file,格式,diff
From: https://www.cnblogs.com/zjacky/p/17560652.html

相关文章

  • Stable Diffusion修复老照片-图生图
    修复老照片的意义就不多说了,相信大家都明白,这里直接开讲方法。1、原理这个方法需要一个真实模型,以便让修复的照片看起来比较真实,我这里选择:realisticVisionV20,大家有更好的给我推荐哦。还需用搭配两个特殊设置:ControlNetTile:这是一个ControlNet模型,用于放大和补充细节。在......
  • AI绘画StableDiffusion实操教程:冰霜旗袍美女
    飞书原文链接,获取更多资源:AI绘画StableDiffusion实操教程:冰霜旗袍美女前几天分享了StableDiffusion的入门到精通教程:AI绘画:StableDiffusion终极炼丹宝典:从入门到精通但是还有人就问:安装是安装好了,可是为什么生成的图片和你生成的图片差距那么远呢?怎么真实感和质感一个天一个......
  • 明代元素时装小姐姐【InsCode Stable Diffusion美图活动一期】
    一、StableDiffusion模型在线使用地址:https://inscode.csdn.net/@inscode/Stable-Diffusion二、模型版本及相关配置:模型:chilloutmix_NiPrunedFp32FixLora:hanfu_ming采样迭代步数(steps):40采样方法(Sampler):DPM++2MKarras三、图片提示词与反向提示词:正向提示词:<l......
  • 可爱小猫猫【InsCode Stable Diffusion美图活动一期】
    一、StableDiffusion模型在线使用地址:https://inscode.csdn.net/@inscode/Stable-Diffusion二、模型版本及相关配置:模型:chilloutmix_NiPrunedFp32fixLora:cat_20230627113759采样迭代步数(steps):32采样方法(Sampler):DPM++2MKarras提示词相关性(CFGScale):7三、图......
  • AI绘画Stable Diffusion实战操作: 62个咒语调教-时尚杂志封面
    今天来给大家分享,如何用sd简单的咒语输出好看的图片的教程,今天做的是时尚杂志专题,话不多说直入主题。还不会StableDiffusion的基本操作,推荐看看这篇保姆级教程:AI绘画:StableDiffusion终极炼丹宝典:从入门到精通飞书原文链接:AI绘画StableDiffusion实战操作:62个咒语调教-时尚杂......
  • diff 与 patch 命令的示例
    diff#diff以逐行的方式,比较文本文件的异同处,特别是比较两个版本不同的文件,如果指定要比较目录,则比较目录中相同文件名的文件,但不会比较其中子目录#diff的输出描述两个文件的不同,告诉用户怎样改变第一个文件之后与第二个文件保持一致(它是以"行"为单位进行比较的)##-r对比......
  • Stable Diffusion AI 绘画使用
    界面参数在使用 StableDiffusion 开源 AI 绘画之前,需要了解一下绘画的界面和一些参数的意义目前AI绘画对中文提示词的效果不好,尽量使用英文提示词最主要一些参数如下:Prompt: 正向提示词,也就是 tag,提示词越多,AI 绘图结果会更加精准Negativeprompt: 反向提示词,也就......
  • 我在阴影之中-InsCode Stable Diffusion 美图活动一期
    写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益......
  • 击败Stable Diffusion XL,商汤绘画大模型出手即大作,论文公开、免费试玩
    前言 商汤大模型团队提出的文生图大模型RAPHAEL,可以生成具有高度艺术风格或者摄影风格的图片,速度极快。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各......
  • git-diff
    1.diff说明用于比较两次修改的差异1-1.参数参数描述–cached显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间差异。–staged同--cached。–stat查看简单的diff比较结果。1-2.改动范围说明@@-l,s+l,s@@:其中l是起始行号,s是......