恢复 git reset --hard tag_name/commit/HEAD的误操作

Git数据恢复:深入理解reset原理与reflog实战应用 在版本控制系统领域,数据安全与恢复是开发者必须掌握的核心技能。Git通过引用日志机制记录所有本地操作轨迹,为误操作提供恢复可能。其原理基于Git内部的对象存储模型,每次提交都会生成唯一哈希值并持久化保存,即使分支指针移动,原始数据依然存在。这一机制的技术价值在于为开发者提供了操作容错能力,避免因误用reset等命令导致工作成果丢失。在实际开发场景中,当使用git reset --hard回退版本后,看似删除的提交仍可通过git reflog查看操作历史,利用HEAD@{n}或提交哈希重新指向目标状态,实现精 阅读详情

最近一直在不断地使用git工具下code以及build code,在这过程中要不断的切branch和track远程branch以及切对应的tag,而在这这过程中我们会用到:git reset --hard tag_name来对版本进行切换,如果我们对reset前的那一版未保存或者push,我们误操作了该命令,在很多资料里说的都是–hard很危险有的说是不可逆操作,但是昨天我遇到这样的问题在导师的指导下才知道该命令是可逆的,下面我们来看看具体的:

举个例子说明操作过程:

//git需要提前安装,安装方法百度或者学些ProGit文档第一章,讲的很详细
$ git init  //在当前目录下建立本地git库
$ touch test.txt//建立测试文件
$ git add test.txt
$ git commit -m "initial commit" //也可以使用`git commit .`来代替add和commit -m这两步
$ echo 'touch test.txt' >> test.txt
$ git commit -a -m " add to test"//一次性提交到本地git库中

使用git log命令产看一下提交历史:

//git log -param,很多参数如-s -p等可以使用
$ git log
* 74abca4 (HEAD, master)  add to test
* 8f0b801 initial commit

这里我们可以来一次git reset --hard tag_name/commit_id看一下:

$ git reset --hard 8f0b801
$ git log
* 8f0b801(HEAD, master) initial commit

我们退回到前一个版本了,之前的操作被抹去了,没法再直接切回去了,但是不要怕,git还有一个命令就是防止这种现象的,那就是git reflog。git reflog就是用来记录你之前所有提交的历史,他的记录很简单那就是commit_id以及提交信息记录,但是有了这两个就够了,我们可以找回我们丢失的东西了,下面我们卡看具体操作:

$ git reflog
712c2ab HEAD@{0}: reset: moving to 8f0b801
74abca4 HEAD@{1}: commit: add to test
8f0b801 HEAD@{2}: commit (initial): initial commit

有了之前所有操作的commit以及提交信息我们就能找到我们要找的版本了,确认了我们要找的就是74abca4这一版,那么我们接下来就可以切换了,下面我们看一下命令:

$ git reset --hard 74abca4//在`git reset --hard`切回去

再来看一下 git 记录:

$ git log
*74abca4 (HEAD, master) add to test
*8f0b801 initial commit

这样我们的reset前的版本就算是找回了,git reset后想找回得在git没有清理前找回,这个清理时间大概是一个月以后了,所以想找回必须在这之前。

Git reflog:本地操作的指针移动日志与后悔药机制 Git reflog 是 Git 版本控制系统中记录分支和 HEAD 指针移动轨迹的核心机制,不同于基于提交链的 git log,它以毫秒级时间戳持久化存储每次 checkout、reset、rebase 等非合并操作的‘指针位移’事件。其本质是本地、不可上传、只追加的 reference 日志,为恢复被 --hard 重置丢弃的提交、找回已删除但未推送的分支、定位异常 HEAD 偏移提供唯一可靠索引。技术价值在于填补 Git 对象模型中‘可达性断连’后的恢复空白,支撑安全重构、CI 脚本容错及个人开发兜底 阅读详情

相关推荐

Git PR合并策略:squash、merge commit与rebase的本质区别与工程选择

Git PR合并不是简单的代码集成操作,而是对提交历史语义、协作可追溯性与工程可维护性的系统性设计。其核心涉及三种基础机制:创建合并提交(--no-ff)保留分支拓扑与集成上下文;压缩合并(squash and merge)生成线性简洁历史但丢失中间迭代;变基合并(rebase and merge)实现提交线性化却牺牲原始时间戳与冲突可审计性。技术价值在于支撑快速故障定位(git bisect)、精准责任归属(git blame)、合规审计与新人上手效率。典型应用场景包括CI/CD流水线触发逻辑适配、mon

dienangpiao2051的博客 795

git常用命令整理

这里写自定义目录标题git本地新建分支提交到远程仓库流程 git本地新建分支提交到远程仓库流程 1.git checkout -b newbranch 2.git push origin newbranch (远端如果没有分支会自动创建新的分支并提交代码) #git远程仓库新建分支关联本地分支流程 1.远程仓库新建分支 2.在master分支 git pull 3.git checkout new......

qq_34345149的博客 2652

Git revert 原理与实战:安全回退误提交的协作黄金标准

Git revert 是一种基于版本控制系统底层对象模型的语义化历史修正机制,其核心原理是通过计算目标 commit 与其父提交的 diff 并执行逆运算,生成一个逻辑等价但内容相反的新 commit。不同于 reset 的指针重置和历史篡改,revert 严格遵循 Git 的不可变对象(commit/tree/blob)设计,保持有向无环图(DAG)完整性,从而保障多人协作、CI/CD 流水线稳定与审计合规性。该技术广泛应用于金融系统、SaaS 产品、嵌入式开发等对可追溯性与协作安全性要求严苛的场景。本文

weixin_30352191的博客 356

(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert

(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert

大雾起了清晨 6385

Git常用命令实战指南:从核心概念到高效工作流

版本控制系统是现代软件开发中管理代码变更的基础工具,其核心原理是通过记录文件的历史版本,实现团队协作与代码追溯。Git作为目前最主流的分布式版本控制系统,以其高效的分支管理和灵活的撤销机制,为开发者提供了强大的技术价值。在工程实践中,掌握Git的日常提交、分支管理和远程协作等核心工作流,能显著提升开发效率与代码质量。本文聚焦于Git的实战应用,通过解析暂存区与本地仓库的交互机制,并结合分支管理与冲突处理等高频场景,系统梳理了覆盖80%日常开发需求的常用命令与最佳实践,帮助开发者构建清晰的版本控制思维。

364

Git初始化最佳实践:从git init到首次推送的完整指南

Git版本控制是现代软件开发的基础能力,其核心始于仓库初始化。理解git init原理、.git目录结构及初始化前的结构梳理、.gitignore预配置和用户身份设定,是构建轻量、安全、可协作代码仓库的前提。技术价值体现在避免冗余文件污染、保障敏感信息隔离、支撑精准追溯与高效协同。典型应用场景包括新项目启动、团队协作初始化、CI/CD流水线接入及GitOps配置管理。本文聚焦git init这一关键起点,系统拆解初始化前准备、命令执行、状态验证与远程连接全流程。

425

git reset --hard

git reset

qq_41878114的博客 213

CAD的.dwg文件导入 ArcGIS:高程分析、坡度分析、坡向分析

CAD的.dwg文件导入 ArcGIS,再进行高程分析、坡度分析、坡向分析。

My_Echo_yM的博客 7239

git reset hard命令的用法

超详细的git reset hard命令使用教程

m0_52449484的博客 846

SAP 运费处理方式

从直接的处理方式上看,情况1/2/3可以将运费记账到物料成本中,但情况4/5/6是直接记账到成本对象中,具体是要体现在损益表中,还是要结转到物料成本中,可依据业务要求进行好处理。如果体现在损益表中,不需要多过多额外的操作,如果要体现在物料成本中心,则需要再进行一系列的处理,最终将金额结转到物料成本中。因为在创建采购订单时不知道具体运费,可以不维护运费,只需要维护材料价格。:创建采购订单时,运费是由供应商承担,很多时候是包含在材料报价中,这种情况不需要专门针对运费进行处理,材料价格中已包含运费。

weixin_44506537的博客 3374

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

git reset中hard与soft区别

前言  对于我们日常开发中,我们常用的方法可能是git reset --hard,来强行回退commit所提交的信息,这是不友好的,也许我们希望对误操作提交的commit不进行删除而是重新修改并进行提交,这个时候就需要–soft操作了,下文将介绍hard模式与soft模式的差异~ git reset中的hard与soft  对于git reset我们在日常主要是使用其两种模式,分别为hard与soft模式,对于git reset --hard的作用是代码强制回溯到某节点,对于当前节点->回溯节点中间已

认定的总要想办法去完成。 9000

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

Git误操作恢复指南:12种常见场景与实战解决方案

版本控制系统是软件开发的核心基础设施,Git作为分布式版本控制的行业标准,其对象存储和引用机制为数据恢复提供了可能。通过理解Git的blob/tree/commit对象模型和reflog工作原理,开发者可以追溯几乎所有误操作记录。在工程实践中,从简单的`git checkout`恢复工作区文件,到利用`git fsck`扫描丢失的提交对象,再到通过`git bundle`创建仓库快照,这些技术手段能有效应对代码覆盖、分支删除等常见事故。特别在团队协作场景中,结合CI系统和镜像仓库的预防性策略,可将版本控制风

weixin_33892359的博客 323

从Peer到脉冲地震波:免费Python工具全流程配置教程(PyCharm+Anaconda)

本文详细介绍了如何使用Python工具链(PyCharm+Anaconda)实现从Peer数据库获取地震波数据到生成脉冲地震波的全流程配置。通过开源工具EQTOOL和PySeismicGen,结合Python环境搭建、数据格式转换和脉冲地震动生成技术,为结构抗震分析提供高效、灵活的解决方案。

weixin_29093169的博客 430

FastAPI + React:现代 Web 前后端分离开发的全栈实践指南

• 部署:CI/CD 双流水线,前端 push → GitHub Actions → Cloudflare Pages;• 后端:分层结构 routers → services → repositories → models,单测覆盖率 90 %。• 接口缓存:Redis + FastAPI Depends 实现接口级缓存,读 QPS 提升至 5 k。• 前端:BFF 由 React Query 代理,统一缓存、重试、分页。GET /items/{id} 详情。,前端同学无需等 Mock 即可联调。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 1494

【Git】《Git 系列指南(二):Git基本操作与 reset 三种模式》

不知道你在工作或学习中,是否遇到过这样的场景:为了不让文档丢失,或者改错后能恢复,我们常常被迫复制出一大堆副本,比如:“报告-v1”“报告-v2”“报告-v3”“报告-最终版”“报告-打死也不改版”每个版本都有各自的内容,但最终我们只需要其中一份。然而在这之前,为了保留这些历史版本,我们不得不复制粘贴,产出的文件越来越多。文件多不是问题,真正让人头疼的是:随着版本数量的不断增多,你还记得这些版本各自都修改了什么吗?文档如此,我们写的项目代码同样存在这个问题!为了解决这一痛点应运而生。

2501_93351213的博客 878

Colmap论文——《Structure-from-Motion Revisited》论文阅读笔记

  最近又将Colmap论文翻出来仔细阅读总结了一下,于是顺便写个博客记录一下。Structure-from-Motion Revisited是当前SOTA的增量式SfM算法Colmap的论文,发表于2016年计算机视觉顶会CVPR。它是增量式SfM里程碑式的作品。 论文地址:https://openaccess.thecvf.com/content_cvpr_2016/papers/Schonberger_Structure-From-Motion_Revisited_CVPR_2016_paper.p

zeeq的博客 1万+

Git 工程指引(命令+问题)

Git 工程指引(命令+问题),包括指令区别,常见的报错问题,特殊场景的使用,如何撤销,高级指令的使用!

少年何妨梦摘星,敢挽桑弓射玉衡。 他时若遂凌云志,敢笑黄巢不丈夫。 1053

SKILL 是什么?怎么做?五分钟 带你从入门到精通

skill-creator 是 Anthropic 官方开源的“元技能”——一个专门用来创建 Skill 的 Skill。你只需要用自然语言描述想要什么功能,它会自动生成。从更宏观的视角看,Skills 的出现标志着 AI 编程的一次范式转变。在传统的 AI 编程中,代码是确定性的:1 是 1,2 是 2。但到了大模型时代,代码变得不确定——你不知道模型会输出什么,不知道它会不会突然删掉几行代码。这种不确定性让很多开发者感到不安。Skills 把这套逻辑又拉了回来。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 643

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Git 2.23后分支切换与文件恢复职责分离详解

Git 是一个基于对象数据库的分布式版本控制系统,其核心操作围绕 HEAD 指针、暂存区(index)和工作目录(working tree)三者协同展开。在 Git 2.23 版本之前,git checkout 命令长期承担分支切换、文件恢复、分支创建三重职责,导致语义模糊、行为不可预测,成为新手学习障碍和团队协作故障高发点。该版本通过引入 git switch 和 git restore 两个单一职责命令,实现 HEAD 移动与文件状态还原的彻底解耦,显著提升命令可预测性与脚本安全性。这一重构不仅优化了日

weixin_34178244的博客 487

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Git分支与fetch/pull原理:分布式协作的底层逻辑

Git分支本质是轻量级commit指针,而非独立代码副本;fetch操作同步远端引用与对象,构建本地DAG图谱,不改变工作区;pull则是fetch加merge或rebase的封装,涉及历史整合决策。理解ref、remote-tracking branch和commit对象关系,是避免合并冲突、丢失提交和CI失败的技术前提。本文聚焦中大型团队在Monorepo、微服务及遗留系统维护中的真实协作场景,结合分支生命周期管理、fetch/prune机制、pull-rebase安全实践等核心问题,提供可落地的Git

409

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Git与GitHub新手完全操作手册

本文是一篇针对零基础新手的Git和GitHub完整入门指南。主要内容包括: Git基础概念:介绍版本控制系统的作用,以及Git与GitHub的关系 安装配置:详细说明Git安装步骤和必要的初始配置 核心概念:讲解Git的四个工作区域(工作区、暂存区、本地仓库、远程仓库) 基本操作:从创建仓库、提交更改到查看历史记录和版本回退 分支管理:分支的创建、切换、合并等操作及实际应用场景 远程协作:GitHub仓库的创建、关联、推送和拉取操作 进阶技巧:解决代码冲突、使用标签和暂存功能 实用场景:提供6个常见开发场景

2601_95045387的博客 658

Git代码提交规范及问题处理完整版

开发/提交代码前,必须拉取最新代码,杜绝冲突。

weixin_43864993的博客 1290

Git 使用笔记

或者按住shift加鼠标右键有个 `在此处打开Powershell窗口`,都可以直接 使用git命令。在你创建仓库文件夹内鼠标右键有个 Git Bash Here打开就好,

weixin_47059239的博客 749

Git完整工作流实战:从基础配置到团队协作规范

版本控制系统是现代软件开发的核心基础设施,它通过记录代码变更历史、支持并行开发和团队协作,解决了代码管理中的一致性、追溯性和协作效率问题。其核心原理基于分布式存储和快照机制,确保数据完整性和操作灵活性。在工程实践中,一个清晰的工作流程能极大提升开发效能,减少合并冲突和部署风险。Git作为当前最主流的分布式版本控制系统,结合功能分支、Pull Request和提交规范等实践,形成了如Git Flow等成熟的工作流模型。这些模型定义了代码从开发到上线的标准化路径,特别适用于需要持续集成和频繁发布的团队协作场景。

weixin_34343000的博客 358
上一篇: repo介绍
下一篇: 宏(macro)定义的简介
magiclyj
博客等级 码龄10年 41粉丝 76原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值