当前位置: 首页 > news >正文

linux patch 和 git patch

一、Linux patch 文件生成和应用

生成方式1:patch

#多文件打 patch
diff -uparN file1 file2 > xx.diff
diff -uparN folder1 folder12 > xx.diff
-------------------------------------------------------
diff --help
-u 显示有差异行的前后几行(上下文), 默认是前后各 3 行, 这样, patch 中带有更多的信息
-p <剥离层级>或--strip=<剥离层级>  设置欲剥离几层路径名称。
-a 逐行比较文本文件
-r 递归
-N 将新添加的文件全新打印出来作为新增的部分。如果不使用N,只简单提示缺少文件。

生成方式2:quilt 是一个制作和应用补丁的工具,它适合于管理较多补丁

sudo apt-get install quilt
#分四步生成patch:quilt new xxx.patchquilt add file1 file2 ...修改文件 file1 file2 ...quilt refresh -pab
#########################
quilt --helpquilt new				#创建新补丁文件quilt add {files}   	#关联文件quilt remove files  	#取消关联文件,是add相反的操作quilt refresh           #修改完成后,将修该记录更新至补丁中quilt top      			#查看最近的一个patchquilt diff    			#查看对比修改的内容quilt files       		#查看当前patch关联的文件quilt series      		#查看左右的patchquilt pop     			#回退刚才文件的改动

应用 patch

# p数字:表示跳过几级目录,0 标识不去掉为全路径,3 标识去掉第3层路径 ...
patch -p3 < xx.patch

取消补丁 patch

patch -RE -p0 < xx.patch
patch --help# -R  --reverse# -E --remove-empty-files

二、Git patch

根据是否含有 commit 信息,Git 提供了两种补丁方案:

不含commit信息: git diff 生成的 .diff

git diff file1   > xxx.patch     #单个文件
git diff <r1>..<r2>  >  xxx.patch  #两个commit间的修改的patch# 所有修改文件打成 patch
git diff > xxx.patch# 检查 patch
git apply --stat  xxx.patch  # 查看patch的情况
git apply --check xxx.patch  # 检查patch是否能够打上,如果没有任何输出,则说明无冲突,可以打上# 应用patch
git apply xxx.patch  #可能有冲突
git apply --reject xxx.patch #有冲突时,发生冲突的部分会保存为.rej文件,未发生冲突的部分会成功打上patch
vi  xx.rej  #修改rej文件,解决冲突

含commit信息: git format-patch 生成的 .patch 文件

git format-patch HEAD^       #生成最近的1次commit的patch
git format-patch -1          #生成最近的1次 等同上一条git format-patch HEAD^^      #生成最近的2次commit的patch
git format-patch -2          #生成最近的2次 等同上一条git format-patch HEAD^^^     #生成最近的3次commit的patch
git format-patch -3          #生成最近的3次 等同上一条git format-patch HEAD^^^^    #生成最近的4次commit的patch
git format-patch -4          #生成最近的4次 等同上一条git format-patch <r1>..<r2>  #生成两个commit间的修改的patch(生成的patch不包含r1. <r1>和<r2>都是具体的commit号)
git format-patch <r1>        #生成某commit以来的修改patch(不包含该commit)git format-patch --root <r1> #生成从根到r1提交的所有patch# 应用patch
git am -3 --signoff xxx.patch  # -3 让 Git 更智能地处理冲突;添加-s或者--signoff,添加本机git信息到为signed off by;
git am -3 -i ~/path/*.patch    #多个patch;-i 交互模式选项: Apply? [y]es /[n]o /[e]dit /[v]iew patch /[a]ccept all
git am --abort              # 废弃上一条am命令已经打了的patch
#有冲突时:
git apply --reject xxx.patch #有冲突时,发生冲突的部分会保存为.rej文件,未发生冲突的部分会成功打上patch
vi  file1.rej  #修改rej文件,解决冲突
git add file1
git am --resolved           # 告知冲突已解决完

参考链接:
Git 补丁 patch 使用方法
https://blog.csdn.net/u013318019/article/details/114860407

http://www.lryc.cn/news/120950.html

相关文章:

  • 【vue Dplayer】播放hls视频流
  • 给不蒜子(busuanzi)统计数据增加初始值
  • WebStorm
  • 代码随想录算法训练营day59
  • 大模型训练时间估算
  • 函数的模拟实现
  • CSDN博客批量查询质量分https://yma16.inscode.cc/请求超时问题(设置postman超时时间)(接口提供者设置了nginx超时时间)
  • 什么是 CSRF 攻击?
  • [内网渗透]CFS三层靶机渗透
  • 一百五十一、Kettle——Linux上安装的kettle8.2开启carte服务以及配置子服务器
  • 2023高教社杯数学建模A题 B题C题 D题 E题思路代码分析
  • 从ChatGLM2-6B来看大模型扩展上下文和加速推理相关技术
  • Unity特效总览
  • Unity中人物控制器
  • 零钱兑换-输出组合数
  • Mybatis 小结
  • 【Cartopy】库的安装和瓦片加载(天地图、高德等)
  • TCPDF生成PDF文件,含jpjraph生成雷达图
  • Flink-串讲面试题
  • 如何培养对技术的热爱
  • Vue响应式数据的原理
  • pytest fixture 用于teardown工作
  • 39 printf 的输出到设备层的调试
  • 数字普惠金融、数字创新与经济增长—基于省级面板数据的实证考察(2011-2021年)
  • 控制renderQueue解决NGUI与Unity3D物体渲染顺序问题
  • 概率论与数理统计:第二、三章:一维~n维随机变量及其分布
  • BOLT- 识别和优化热门的基本块
  • Golang 中的 time 包详解(四):函数详解
  • 【前端 | CSS】5种经典布局
  • 腾讯云宣布VPC网络架构重磅升级,可毫秒级感知网络故障并实现自愈