You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从git reset --hard操作中恢复丢失的代码?

如何恢复你丢失的Git工作内容

别慌!你遇到的是Git新手常犯的误操作,但好在Git的reflog功能专门用来拯救这种场景——只要你没手动清理过reflog,丢失的内容大概率能完整找回来。

根据你描述的情况(原本2个提交,现在只剩1个,reflog里能看到相关记录),按以下步骤操作即可:

  1. 找到丢失提交的哈希值
    先执行这条命令查看所有HEAD的历史变动记录:

    git reflog
    

    你会看到类似这样的输出:

    abc1234 HEAD@{0}: reset --hard HEAD: updating HEAD
    def4567 HEAD@{1}: commit: 第二个提交的说明
    123abcd HEAD@{2}: commit (initial): initial commit
    

    找到那条对应你丢失的第二个提交的记录(比如上面的def4567,后面跟着你之前写的提交说明),把前面的7位哈希值记下来。

  2. 创建临时分支恢复内容
    为了避免误操作破坏当前分支,我们先创建一个新分支来恢复丢失的提交:

    git checkout -b recovered_work def4567
    

    执行完这条命令后,你会自动切换到recovered_work分支,此时你应该能看到所有丢失的工作内容了。

  3. 合并回主分支(可选)
    确认内容没问题后,你可以把恢复的内容合并回你的主分支(比如main或master):

    # 切回主分支
    git checkout main
    # 合并恢复分支的内容
    git merge recovered_work
    

补充说明

你之前执行的git reset --hard HEAD会强制将工作区、暂存区、HEAD指针全部重置到当前HEAD指向的提交状态。如果当时你的HEAD指向的是更早的提交(或者你误回退了提交),就会导致后续的提交“消失”在git log里,但这些变动都会被reflog记录下来——这也是Git比其他版本控制工具更可靠的地方之一。

内容的提问来源于stack exchange,提问作者Mehdi El Aissi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:38:34