硬核 | Git reflog 拯救世界:找回误删分支、撤销错误 reset 的终极武器 发布时间:2026/6/22 0:22:14 凌晨两点你刚写完一个复杂的功能模块正准备提交。终端里敲下git reset --hard HEAD~3想清理一下本地无用的提交回车之后屏幕上闪过一堆文件被删除的信息。你突然意识到——你搞错了。那 3 个提交里有你整整两天的代码。冷汗瞬间就下来了。别慌。只要你还在这台电脑上只要终端还没关Git 有一个功能可以救你——reflog。一、什么是 reflogGit 的“黑匣子”reflog全称Reference Log引用日志。简单说它就是 Git 在本地仓库里记录的一份操作日记。每一次你执行会改变 Git 引用ref的操作——提交、切换分支、合并、重置、变基——Git 都会默默地在 reflog 里记上一笔。记录的内容包括操作前的 SHA 值、操作后的 SHA 值以及一行简短的操作说明比如“commit”或“reset: moving to HEAD~5”。reflog 是本地专属的。它只存在于你本地的仓库里不会被git push推送到远程。每个克隆出来的仓库都有自己的 reflog。这意味着你在本地误操作丢掉的提交远程仓库里可能根本找不到——reflog 是你唯一的救命稻草。二、git log vs git reflog别搞混了很多初学者分不清这两个命令先看一个直观对比维度git loggit reflog记录什么提交历史commit 的父子关系链引用HEAD、分支指针的每一次移动能看到什么当前分支可达的所有提交所有被操作过的引用包括已被丢弃的丢失的提交能看到吗❌ 看不到✅ 能看到是公共历史吗是可推送到远程否仅本地一句话总结git log看的是“提交从哪里来”提交链git reflog看的是“HEAD 去过哪里”操作轨迹。当你git reset --hard回退之后git log里那些被丢弃的提交就消失了——但git reflog里依然有它们的身影。这就是 reflog 的核心价值它记录的是你做过什么而不是仓库里现在有什么。三、reflog 核心用法四步走第一步查看完整操作记录最基本的使用方式就是直接执行bashgit reflog输出大致长这样textabc1234 (HEAD - main) HEAD{0}: commit: 修复登录bug def5678 HEAD{1}: reset: moving to HEAD~2 789abcd HEAD{2}: commit: 添加用户认证模块 ...每一行都包含提交的 SHA 值、HEAD 的索引位置、操作描述。HEAD{0}表示“当前 HEAD 指向的位置”HEAD{1}表示“HEAD 上一次指向的位置”依此类推。第二步定位目标操作节点在 reflog 输出中找到你误操作之前的那条记录。比如你执行了git reset --hard HEAD~3就去 reflog 里找到执行 reset之前的那条 commit 的 SHA。第三步基于历史节点恢复找到目标 SHA 后你有两种恢复方式方式一直接 reset 回去bashgit reset --hard 目标SHA方式二基于目标 SHA 创建新分支更安全不影响当前分支bashgit checkout -b rescue-branch 目标SHA这样就把丢失的提交“捞”回来了。第四步验证恢复结果用git log确认恢复的提交是否完整检查文件是否都在。四、三大实战场景手把手救回崩溃现场场景一误删分支你执行了git branch -D feature-login删掉了一个还没合并的分支。恢复步骤bash# 1. 查看 reflog找到被删分支最后一次提交的 SHA git reflog # 输出中找到类似这样的记录 # abc1234 HEAD{5}: commit: 完成登录功能 # 2. 基于该 SHA 重新创建分支 git checkout -b feature-login abc1234就这么简单。删除分支并不会立即清除提交记录。只要这些提交还没被垃圾回收GCreflog 就能帮你找回来。小贴士养成用git branch -d代替git branch -D的习惯。-d会拒绝删除未合并的分支相当于多一层保护。场景二错误执行 git reset --hard这是最让人崩溃的场景——git reset --hard会直接丢弃工作区和暂存区的所有改动连提交历史都会被抹掉。但好消息是git reset --hard也不是不可逆的。恢复步骤bash# 1. 立刻执行 reflog越早越好 git reflog # 找到执行 reset 之前的那条记录 # def5678 HEAD{1}: reset: moving to HEAD~3 ← 这是误操作 # abc1234 HEAD{2}: commit: 重要的功能代码 ← 这是你要恢复的目标 # 2. 直接 reset 回去 git reset --hard abc1234只要你在git gc垃圾回收之前执行 reflog就能找回。关键是发现误操作后立刻执行 reflog不要犹豫。场景三git commit --amend 改错了你执行了git commit --amend想修改最后一次提交的信息结果改错了——或者更糟你忘了暂存区里还有别的改动amend 把不该提交的内容也打包进去了。恢复步骤bash# 1. 查看 reflog git reflog # 找到 amend 之前的提交 # abc1234 HEAD{1}: commit (amend): 错误的提交信息 ← amend 后的 # def5678 HEAD{2}: commit: 原来的提交 ← amend 前的 # 2. reset 到 amend 之前的状态 git reset --soft def5678用--soft而不是--hard这样你的改动会保留在暂存区可以重新提交。amend 也是可逆的——reflog 记录了所有 HEAD 的移动。场景四rebase 变基搞砸了rebase 过程中如果出现冲突或者 rebase 之后发现结果不对同样可以用 reflog 回到 rebase 之前的状态。bash# 1. 查看 reflog找到 rebase 开始前的提交 git reflog # 2. 直接 reset 回去 git reset --hard rebase前的SHAreflog 会记录 rebase 的每一步你可以回到任何一个中间状态。五、reflog 的工作原理为什么它能救你要真正理解 reflog需要了解 Git 的底层设计。Git 的对象是不可变的。一旦你创建了一个 commit这个 commit 对象就永远存在于 Git 的对象数据库里。git reset、git branch -d这些操作并不会删除 commit 对象本身——它们只是移除了指向这些 commit 的引用分支指针、HEAD 等。当一个 commit 没有任何引用指向它时它就变成了“不可达对象”unreachable object。这些不可达对象并不会立即被删除而是会留在对象数据库里等待垃圾回收git gc来清理。reflog 的本质就是这些引用的“移动轨迹”。它记录了每一个引用分支、HEAD曾经指向过哪里。即使某个 commit 现在没有任何分支指向它只要 reflog 里还有一条记录指向它这个 commit 就是“可达的”——不会被 GC 清理。这就是 reflog 能救你的底层原因你“丢”掉的提交并没有真的消失只是没有分支指向它们了。reflog 帮你找到了它们曾经的“地址”。六、reflog 的保质期别以为它永远都在reflog 不是永久保存的。Git 会定期清理过期的 reflog 条目。默认保留期限类型默认保留时间当前分支可达的 reflog 条目90 天不可达的 reflog 条目30 天这些配置由gc.reflogExpire和gc.reflogExpireUnreachable控制。当你执行git gc时Git 会清理超过期限的 reflog 条目。一旦 reflog 条目被清理对应的不可达 commit 也会在后续的 GC 中被彻底删除。所以发现误操作后立刻执行git reflog。不要等几天后再想起来。如果想手动清理 refloggit reflog expire --expirenow --all。但除非你明确知道自己在做什么否则不要轻易执行。七、reflog 的局限性它不是什么都能救reflog 很强大但它不是万能的。reflog 救不了已经被 GC 清理的提交。如果误操作后你执行了git gc或者过了 90 天reflog 条目已经被清理那就真的找不回来了。reflog 只记录引用ref的移动。如果你修改了工作区的文件但从未提交然后执行了git checkout .或git reset --hard——这些未提交的改动不会出现在 reflog 里因为 HEAD 没有移动。reflog 是本地专属的。如果你在电脑 A 上误删了提交电脑 B 上的 reflog 里不会有任何记录。reflog 救不了git push --force覆盖远程的提交。远程仓库的 reflog 属于远程仓库你无法直接访问。八、reflog 的最佳实践基于以上理解这里有几条实用建议发现误操作后立刻执行git reflog。越早越好最好连终端都不要关。因为一旦执行了其他操作reflog 里会增加新的条目目标 SHA 会变得更难找。恢复时优先用git checkout -b而不是git reset --hard。前者创建新分支不会影响当前分支的状态后者会直接移动 HEAD可能带来新的风险。定期git reflog看看自己的操作记录。这不仅能帮你熟悉这个命令还能让你对 Git 的操作轨迹有更直观的理解。不要把 reflog 当作备份策略。reflog 只是“意外保险”真正的代码安全还是要靠定期 push 到远程仓库。九、一张图总结text你执行了 git reset --hard HEAD~3 │ ▼ ┌─────────────────────┐ │ git log 里消失了 │ ← 提交链被截断 └─────────────────────┘ │ ▼ ┌─────────────────────┐ │ git reflog 里还在 │ ← HEAD 移动轨迹被记录 │ HEAD{1}: 目标SHA │ └─────────────────────┘ │ ▼ ┌─────────────────────┐ │ git reset --hard 目标SHA │ ← 回到过去 └─────────────────────┘ │ ▼ ┌─────────────────────┐ │ 代码回来了 │ └─────────────────────┘写在最后Git 的强大之处不仅在于它能帮你做版本控制更在于它给了你犯错的空间。git reflog就是 Git 留给你的那扇“后门”——当你reset错了、rebase砸了、branch -D删错了只要还没执行git gcreflog 就能帮你把一切找回来。记住那个凌晨两点的场景。下次再有人问你“Git 误操作了怎么办”你可以淡定地敲下bashgit reflog然后告诉他别慌Git 记得一切。评论区话题你用git reflog救回过最惊险的一次是什么欢迎分享你的“死里逃生”故事 相关新闻 SQL注入绕过技巧全解析:从基础过滤到WAF对抗实战 1. 从“新手”到“绕过”:为什么SQL注入依然危险如果你刚接触网络安全,或者对渗透测试有点兴趣,那你肯定在各种教程、靶场和CTF题目里见过“SQL注入”这四个字。它太经典了,经典到很多人觉得它已经是“上古漏洞”,现代… 2026/6/22 0:22:14 数据采集卡的“心脏手术”:DC-DC电源设计与纹波抑制实战 zlinear开源电子 前言 大家好,我是ZLinear的硬件工程师。 在数据采集卡的硬件设计圈子里,有一个老生常谈的误区:很多人把90%的精力花在ADC选型、信号调理和FPGA逻辑上,却忽视了最基础、最致命的环节——电源。 我曾经接手过一… 2026/6/22 0:22:14 HC908 MCU时钟系统与PLL配置实战:从原理到代码实现 1. 项目概述在嵌入式开发的底层世界里,时钟系统就像是整个微控制器(MCU)的心跳。它决定了指令执行的速度、外设同步的精度,乃至整个系统的功耗与稳定性。对于Motorola(后为Freescale/NXP)的HC908系列8位MCU… 2026/6/21 23:22:13 最新新闻 DeepInsightTheorem:用技巧图谱与渐进式学习提升大模型数学推理能力 1. 项目缘起:当大模型遇上数学,我们到底在期待什么? 最近几个月,我身边不少搞AI应用落地的朋友都在挠头。他们发现,无论是用GPT-4、Claude 3,还是本地部署的开源模型,处理一些基础的文本生成、代… 2026/6/22 1:22:14 炼丹日常:深度学习训练调参的工程化方法论与Loss曲线诊断术 炼丹日常:深度学习训练调参的工程化方法论与Loss曲线诊断术一、Loss曲线会说话:你真的看得懂训练日志吗? 每次训练模型,盯着Loss曲线看,它就像一张心电图——正常的心跳和异常的心律,都写在上面。但很多人只… 2026/6/22 1:22:14 Node.js后端服务架构设计:从分层模式到数据库选型的工程决策 Node.js后端服务架构设计:从分层模式到数据库选型的工程决策一、全栈开发者的后端困境:从"能跑"到"能扛" 前端开发者转全栈,最常犯的错误是把后端当成"给前端提供API的工具"。数据库选型凭直觉,服务… 2026/6/22 1:22:14 嵌入式系统互连技术选型:以太网与RapidIO的深度对比与实战指南 1. 项目概述:为什么嵌入式系统互连技术选型如此关键?在嵌入式系统开发,尤其是高性能计算、通信基站、雷达信号处理这些领域摸爬滚打十几年,我越来越深刻地体会到,系统架构的“骨架”——也就是互连技术(Int… 2026/6/22 1:22:14 Photon光影包:3步打造Minecraft电影级视觉体验的终极指南 Photon光影包:3步打造Minecraft电影级视觉体验的终极指南 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 你是否厌倦了Minecraft原版那单调的方块世界?是否渴望… 2026/6/22 1:22:14 预应力混凝土结构健康监测:DFOS与贝叶斯反演技术 1. 预应力混凝土结构健康监测的挑战与机遇在大型基础设施工程中,预应力混凝土结构因其优异的承载性能和耐久性被广泛应用于桥梁、高层建筑等关键设施。然而,预应力钢束(tendon)的断裂问题一直是困扰工程界的难题——这种内部损伤往… 2026/6/22 1:14:51 日新闻 数据采集卡的“心脏手术”:DC-DC电源设计与纹波抑制实战 zlinear开源电子 前言 大家好,我是ZLinear的硬件工程师。 在数据采集卡的硬件设计圈子里,有一个老生常谈的误区:很多人把90%的精力花在ADC选型、信号调理和FPGA逻辑上,却忽视了最基础、最致命的环节——电源。 我曾经接手过一… 2026/6/22 0:22:14 SQL注入绕过技巧全解析:从基础过滤到WAF对抗实战 1. 从“新手”到“绕过”:为什么SQL注入依然危险如果你刚接触网络安全,或者对渗透测试有点兴趣,那你肯定在各种教程、靶场和CTF题目里见过“SQL注入”这四个字。它太经典了,经典到很多人觉得它已经是“上古漏洞”,现代… 2026/6/22 0:22:14 硬核 | Git reflog 拯救世界:找回误删分支、撤销错误 reset 的终极武器 凌晨两点,你刚写完一个复杂的功能模块,正准备提交。终端里敲下 git reset --hard HEAD~3 想清理一下本地无用的提交,回车之后,屏幕上闪过一堆文件被删除的信息。你突然意识到——你搞错了。那 3 个提交里,有你整整两天… 2026/6/22 0:22:14 周新闻 第四章:本体推理的技术基础设施 当LLM不够用了——本体推理的企业决策实践第三章讲了"怎么落地"的方法论。这一章聚焦在"落地靠什么"——推理的技术基础设施。 如果说前三章是在论证"为什么要做本体推理"和"怎么做才能不失败",那么从这一章开始࿰… 2026/6/21 1:14:33 OpenClaw:本地AI工作流的可编程调度中枢 1. OpenClaw不是“另一个前端界面”,而是本地AI工作流的中枢调度器很多人第一次看到 OpenClaw,下意识会把它当成 ComfyUI 或 Ollama Web UI 那类图形化前端——点几下就能调模型、聊聊天。我最初也这么想,直到在 Ubuntu 24.04.4 的移动硬盘虚… 2026/6/21 1:14:33 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 【免费下载链接】Deceive 🎩 Appear offline for League of Legends, VALORANT, and Legends of Runeterra. 项目地址: https://gitcode.com/gh_mirrors/de/Deceive 你是否曾因为登录游戏就被… 2026/6/21 1:14:33 月新闻 仅剩47小时!Gemini 2.5欧洲语言模型权重微调窗口即将关闭:3个轻量级LoRA适配器+1套验证集,零代码快速部署 更多请点击: https://codechina.net 第一章:Gemini 2.5欧洲语言翻译能力演进与窗口期战略意义 Gemini 2.5在欧洲语言支持方面实现了质的跃升,尤其在德语、法语、西班牙语、意大利语及葡萄牙语的长上下文跨语言对齐、术语一致性保持和文化语境… 2026/6/21 17:31:29 【Gemini客户反馈分析实战指南】:20年AI产品专家亲授3大高价值洞察模型与落地工具包 更多请点击: https://kaifayun.com 第一章:Gemini客户反馈分析的核心价值与演进脉络 在AI产品持续迭代的背景下,Gemini模型的客户反馈已从早期零散的体验吐槽,逐步演变为结构化、多模态、实时驱动的关键决策依据。其核心价值不仅… 2026/6/21 6:27:57 Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 更多请点击: https://intelliparadigm.com 第一章:Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 我们对2024年6月1日–6月28日期间App Store与Google Play中含“Gemini”关键词的12,743条低分&a… 2026/6/21 17:31:41
SQL注入绕过技巧全解析:从基础过滤到WAF对抗实战 1. 从“新手”到“绕过”:为什么SQL注入依然危险如果你刚接触网络安全,或者对渗透测试有点兴趣,那你肯定在各种教程、靶场和CTF题目里见过“SQL注入”这四个字。它太经典了,经典到很多人觉得它已经是“上古漏洞”,现代… 2026/6/22 0:22:14
数据采集卡的“心脏手术”:DC-DC电源设计与纹波抑制实战 zlinear开源电子 前言 大家好,我是ZLinear的硬件工程师。 在数据采集卡的硬件设计圈子里,有一个老生常谈的误区:很多人把90%的精力花在ADC选型、信号调理和FPGA逻辑上,却忽视了最基础、最致命的环节——电源。 我曾经接手过一… 2026/6/22 0:22:14
HC908 MCU时钟系统与PLL配置实战:从原理到代码实现 1. 项目概述在嵌入式开发的底层世界里,时钟系统就像是整个微控制器(MCU)的心跳。它决定了指令执行的速度、外设同步的精度,乃至整个系统的功耗与稳定性。对于Motorola(后为Freescale/NXP)的HC908系列8位MCU… 2026/6/21 23:22:13
DeepInsightTheorem:用技巧图谱与渐进式学习提升大模型数学推理能力 1. 项目缘起:当大模型遇上数学,我们到底在期待什么? 最近几个月,我身边不少搞AI应用落地的朋友都在挠头。他们发现,无论是用GPT-4、Claude 3,还是本地部署的开源模型,处理一些基础的文本生成、代… 2026/6/22 1:22:14
炼丹日常:深度学习训练调参的工程化方法论与Loss曲线诊断术 炼丹日常:深度学习训练调参的工程化方法论与Loss曲线诊断术一、Loss曲线会说话:你真的看得懂训练日志吗? 每次训练模型,盯着Loss曲线看,它就像一张心电图——正常的心跳和异常的心律,都写在上面。但很多人只… 2026/6/22 1:22:14
Node.js后端服务架构设计:从分层模式到数据库选型的工程决策 Node.js后端服务架构设计:从分层模式到数据库选型的工程决策一、全栈开发者的后端困境:从"能跑"到"能扛" 前端开发者转全栈,最常犯的错误是把后端当成"给前端提供API的工具"。数据库选型凭直觉,服务… 2026/6/22 1:22:14
嵌入式系统互连技术选型:以太网与RapidIO的深度对比与实战指南 1. 项目概述:为什么嵌入式系统互连技术选型如此关键?在嵌入式系统开发,尤其是高性能计算、通信基站、雷达信号处理这些领域摸爬滚打十几年,我越来越深刻地体会到,系统架构的“骨架”——也就是互连技术(Int… 2026/6/22 1:22:14
Photon光影包:3步打造Minecraft电影级视觉体验的终极指南 Photon光影包:3步打造Minecraft电影级视觉体验的终极指南 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon 你是否厌倦了Minecraft原版那单调的方块世界?是否渴望… 2026/6/22 1:22:14
预应力混凝土结构健康监测:DFOS与贝叶斯反演技术 1. 预应力混凝土结构健康监测的挑战与机遇在大型基础设施工程中,预应力混凝土结构因其优异的承载性能和耐久性被广泛应用于桥梁、高层建筑等关键设施。然而,预应力钢束(tendon)的断裂问题一直是困扰工程界的难题——这种内部损伤往… 2026/6/22 1:14:51
数据采集卡的“心脏手术”:DC-DC电源设计与纹波抑制实战 zlinear开源电子 前言 大家好,我是ZLinear的硬件工程师。 在数据采集卡的硬件设计圈子里,有一个老生常谈的误区:很多人把90%的精力花在ADC选型、信号调理和FPGA逻辑上,却忽视了最基础、最致命的环节——电源。 我曾经接手过一… 2026/6/22 0:22:14
SQL注入绕过技巧全解析:从基础过滤到WAF对抗实战 1. 从“新手”到“绕过”:为什么SQL注入依然危险如果你刚接触网络安全,或者对渗透测试有点兴趣,那你肯定在各种教程、靶场和CTF题目里见过“SQL注入”这四个字。它太经典了,经典到很多人觉得它已经是“上古漏洞”,现代… 2026/6/22 0:22:14
硬核 | Git reflog 拯救世界:找回误删分支、撤销错误 reset 的终极武器 凌晨两点,你刚写完一个复杂的功能模块,正准备提交。终端里敲下 git reset --hard HEAD~3 想清理一下本地无用的提交,回车之后,屏幕上闪过一堆文件被删除的信息。你突然意识到——你搞错了。那 3 个提交里,有你整整两天… 2026/6/22 0:22:14
第四章:本体推理的技术基础设施 当LLM不够用了——本体推理的企业决策实践第三章讲了"怎么落地"的方法论。这一章聚焦在"落地靠什么"——推理的技术基础设施。 如果说前三章是在论证"为什么要做本体推理"和"怎么做才能不失败",那么从这一章开始࿰… 2026/6/21 1:14:33
OpenClaw:本地AI工作流的可编程调度中枢 1. OpenClaw不是“另一个前端界面”,而是本地AI工作流的中枢调度器很多人第一次看到 OpenClaw,下意识会把它当成 ComfyUI 或 Ollama Web UI 那类图形化前端——点几下就能调模型、聊聊天。我最初也这么想,直到在 Ubuntu 24.04.4 的移动硬盘虚… 2026/6/21 1:14:33
3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 【免费下载链接】Deceive 🎩 Appear offline for League of Legends, VALORANT, and Legends of Runeterra. 项目地址: https://gitcode.com/gh_mirrors/de/Deceive 你是否曾因为登录游戏就被… 2026/6/21 1:14:33
仅剩47小时!Gemini 2.5欧洲语言模型权重微调窗口即将关闭:3个轻量级LoRA适配器+1套验证集,零代码快速部署 更多请点击: https://codechina.net 第一章:Gemini 2.5欧洲语言翻译能力演进与窗口期战略意义 Gemini 2.5在欧洲语言支持方面实现了质的跃升,尤其在德语、法语、西班牙语、意大利语及葡萄牙语的长上下文跨语言对齐、术语一致性保持和文化语境… 2026/6/21 17:31:29
【Gemini客户反馈分析实战指南】:20年AI产品专家亲授3大高价值洞察模型与落地工具包 更多请点击: https://kaifayun.com 第一章:Gemini客户反馈分析的核心价值与演进脉络 在AI产品持续迭代的背景下,Gemini模型的客户反馈已从早期零散的体验吐槽,逐步演变为结构化、多模态、实时驱动的关键决策依据。其核心价值不仅… 2026/6/21 6:27:57
Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 更多请点击: https://intelliparadigm.com 第一章:Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 我们对2024年6月1日–6月28日期间App Store与Google Play中含“Gemini”关键词的12,743条低分&a… 2026/6/21 17:31:41