git打补丁
参考1:https://www.jianshu.com/p/ec04de3f95cc
参考2:https://blog.csdn.net/sinat_20059415/article/details/80598347
参考3:https://www.jianshu.com/p/4e0bd72572cf
一,补丁的理解
1,补丁其实是基于commit的的管理,使项目开发低耦合可配置;git 中的每个commit都有对应的一个sha1 id;
2,有2种补丁方式:
.diff文件只是记录文件改变的内容,不带有commit记录信息,多个commit可以合并成一个diff文件。
.patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。
.patch文件带有记录文件改变的内容,也带有commit记录信息,每个commit对应一个patch文件。
二,相关命令
1,打补丁
//方法一:format-patch git format-patch 【commit sha1 id】-n #次提交(含)之前的几次提交 git format-patch 【commit sha1 id】 -1 #某个提交的patch git format-patch 【commit sha1 id】..【commit sha1 id】 #某两次提交之间的所有patch //方法二: git diff 【commit sha1 id】 【commit sha1 id】 > 【diff文件名】#diff文件名后缀可以是.diff或者.patch
2,应用补丁
//检查patch/diff是否能正常打入 git apply --check 【path/to/xxx.patch】 git apply --check 【path/to/xxx.diff】 //打入补丁 git apply 【path/to/xxx.patch】#打单个补丁 git apply 【path/to/xxx.diff】 git am 【path/to/xxx.patch】#可以打多个补丁
3,解决冲突
参考:https://blog.csdn.net/weicaihui2008/article/details/99693829
出现冲突补丁会打入失败
继续打补丁
//1,自动合入 patch 中不冲突的代码改动,同时保留冲突的部分 git apply [--reject] xxxx.patch #会生成后缀为 .rej 的文件,保存没有合并进去的部分的内容,可以参考这个进行冲突解决。解决完冲突后删除后缀为 .rej 的文件, //2,解决完冲突后执行git add. 添加改动到暂存区 //3,执行git am --resolved或者git am --continue
跳过该冲突
git am --skip #不能解决想后面再说
恢复原分支并停止
git am --abort
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-03-06 php输出缓存ob系列函数