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

Git分支显示为commit id后丢失变更,如何找回?

找回丢失的Git代码变更

以下是几个实用的恢复步骤,按优先级尝试:

1. 查看Git reflog(最关键)

Git会记录所有HEAD的操作历史,哪怕分支被删除、提交未推送,都能在这里找到痕迹。执行命令:

git reflog

输出里会有类似这样的条目:

372ee52 HEAD@{2}: checkout: moving from dev-branch to main
f8a4d11 HEAD@{3}: commit: 完成用户模块重构

找到和你丢失变更对应的条目(比如包含372ee52的记录,或者你记得的提交描述),记下对应的哈希值(比如上面的f8a4d11),然后:

# 创建新分支保存找回的变更
git branch recovered-changes f8a4d11
# 切换到这个分支查看内容
git checkout recovered-changes

2. 查找未被引用的Git对象

如果你的变更没提交就丢失了,试试用git fsck扫描未被追踪的对象:

git fsck --lost-found

命令会把丢失的提交、文件内容放到.git/lost-found/目录下。进入该目录,用git show查看具体内容:

# 查看丢失的提交内容
git show .git/lost-found/commit/<哈希文件名>
# 查看丢失的文件内容
git show .git/lost-found/blob/<哈希文件名>

找到对应内容后,直接复制或者通过分支恢复。

3. 深挖IntelliJ本地历史

你已经试过本地历史,但可以再细化排查:

  • 右键项目根目录,选择「Local History > Show History」
  • 拖动时间轴滑块,聚焦到你做变更的时间段
  • 逐个查看快照,找到包含缺失代码的记录,右键选择「Restore」恢复,或者单独选中文件恢复

4. 检查隐藏分支/远程分支残留

虽然你说推送失败,但可以试试列出所有分支(包括远程):

git branch -a

如果能看到之前的临时分支,直接切换过去即可;如果远程有残留的推送记录(哪怕失败),可以尝试拉取:

git fetch origin <分支名>
git checkout <分支名>

如果以上方法都无法找回,大概率是变更完全没被Git暂存/提交,且被系统清理了,但优先把前两个步骤(reflog和fsck)仔细操作一遍,这是Git恢复丢失内容的核心手段。

内容的提问来源于stack exchange,提问作者Alejandro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:11:15