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

Git 代码误删除恢复

Git 误删代码并已合并到 master 的完整恢复流程事故描述在特性分支11898472上提交了重要代码提交e069f0fc“#11898472 机房路由图标处理 2”。错误执行了git reset将分支回退到很久之前的版本a863d109导致大量代码在分支上消失。将回退后的11898472分支直接合并到了远程master导致团队所有人的master丢失了 3 天的代码。恢复目标找回丢失的代码。修复远程master分支且不能强制推送避免影响其他同事。完整操作步骤1. 查看操作历史定位丢失的提交gitreflog找到被误删前的最后一次提交例如e069f0fc HEAD{8}: commit (merge): #11898472机房路由图标处理2记下这个哈希e069f0fc。2. 恢复本地特性分支到正常状态gitcheckout11898472gitreset--harde069f0fc此时11898472分支的代码已恢复。3. 强制更新远程特性分支gitpush-forigin11898472覆盖掉远程错误的11898472分支历史。4. 第一次合并将恢复后的特性分支合入 mastergitcheckout mastergitmerge11898472gitpush origin master这一步将找回的代码带入master但由于历史中已经存在错误的合并提交直接合并可能无法完全逆转代码丢失或者只是为了后续revert做准备。实际上我们还需要一个反向提交来精准撤销错误合并的影响。5. 在特性分支上生成反向提交revert 错误合并找到将错误代码带入master的那次合并提交例如从reflog中找到的2a1964dd那次合并把回退后的11898472并入了master。在11898472分支上执行gitcheckout11898472gitrevert-m12a1964ddgitpush origin11898472-m 1保留主线master撤销被合并分支11898472引入的所有更改。这会生成一个新的提交内容上等于把master恢复到错误合并前的状态但历史记录是前进的不会改写已共享的历史。6. 第二次合并将 revert 提交合入 master最终修复gitcheckout mastergitmerge11898472gitpush origin master这次合并把刚才的反向提交带入master从而让master上的代码全部恢复。所有人的仓库在正常pull后即可得到修复后的代码。关键原则特性分支可使用reset --hardpush -f因为通常只有个人使用。共享分支如 master绝对禁止push -f或reset远端历史。必须通过git revert生成新的提交来撤销错误这样其他同事只需pull就能同步修复不会造成强制覆盖或历史分叉。命令速查表步骤命令查找丢失提交git reflog恢复本地分支git reset --hard 正确提交哈希强制推送特性分支git push -f origin 分支名撤销错误合并生成反向提交git revert -m 1 错误合并的哈希推送反向提交git push origin 分支名将修复合并到 mastergit checkout master git merge 分支名 git push origin master补充说明如果后续还想把当初e069f0fc的那次提交以正常历史重新引入master可以再执行一次git revert revert提交的哈希即反向的反向恢复原始更改。操作前建议对整个仓库做一次备份以防万一。
http://www.zskr.cn/news/1399889.html

相关文章:

  • Azure开发者工具智能化与数据库成本优化实战指南
  • Windows 10/11 用户福音:手把手教你用注册表让OneDrive选择性同步(避开那些烦人的临时文件)
  • wsl2+ubuntu22.04配置docker代理
  • Keil MDK编译器警告级别设置问题解析与解决方案
  • 保姆级教程:用DPABI和Matlab给脑图做‘分区体检’,提取AAL90模板特征
  • Seatable 4.3 数据迁移翻车实录:从Ubuntu到CentOS,我踩了哪些坑?
  • 如何搭建第一个AI智能体?零代码Coze完整教程
  • 商品详情接口高并发架构:独立资源池与并发控制实战
  • AI智能体架构优化:将LLM移出检索路径,提升性能与降低成本
  • 使用Taotoken后API调用延迟与稳定性有哪些可观测的改善
  • 修复误删系统文件导致电脑屏幕有时黑屏问题
  • ADHD幸存者偏差
  • 面试题 - GIL全局解释器锁 :为什么Python多线程不能利用多核?GIL对I/O密集和CPU密集任务的影响?如何绕过GIL(多进程、C扩展)
  • STM32F103C8T6串口收发控制LED灯:一个标准库项目搞定硬件交互与调试
  • 纯视觉GUI智能体Mano-P:OSWorld榜首开源项目解析与实践
  • 2024年十大技术趋势抢先看
  • 行业案例|送水猫水站数字化升级实录:借助拉米云 SaaS 破解桶装水配送与管理难题
  • 靠谱的GPU整机定制服务商排名
  • Windows本地postgresql 17升级18
  • CJ 4DPLEX 与科视 Christie 续签合作协议
  • 从‘free’命令看Linux内存管理:你的服务器内存真的‘不够用’吗?
  • AI智能体实战指南:从核心架构到LangChain搭建全解析
  • API集成稳定性实战:防御静默变更与构建弹性架构
  • 2026年AI代理成本抉择:OpenClaw平台与自建方案深度对比
  • SkiaSharp + ViewFaceCore实战:手把手教你打造带标注保存功能的人脸识别Demo
  • 对接LangSmith
  • 48小时基于Google Cloud构建多智能体AI系统:架构、实现与优化
  • Spark SQL 窗口函数完整技术文档
  • 手机信号栏突然冒出个5GA,这到底是什么谜之黑话?
  • nerdctl 2.2.0版本ipv6bug