最新提交在本地及远程仓库均不显示,如何恢复?
找回丢失的Git最新提交
1. 查看本地Git引用日志(reflog)
Git会自动记录所有HEAD的变动记录,包括重置、推送等操作,这是找回丢失提交的核心方法:
- 运行
git reflog,会列出所有HEAD的历史操作,每条记录前的哈希值就是对应提交的标识,找到你丢失的那个最新提交(描述里会有你之前的commit或push相关信息)。 - 拿到目标提交的哈希后,执行
git reset --hard <提交哈希>,就能把当前分支恢复到该提交的状态;如果不想覆盖当前工作区的未提交内容,改用git reset --soft <提交哈希>。
2. 排查远程仓库的操作记录(若有权限)
如果远程仓库支持查看reflog(比如GitHub/GitLab需要管理员权限开启,或者能直接访问远程服务器仓库):
- 若能登录远程服务器,进入仓库目录执行
git reflog找到目标提交哈希,然后在本地执行git fetch origin <提交哈希>:temp-recover,创建临时分支拉取该提交,再合并到你的工作分支。
3. 检查本地暂存和其他分支
- 运行
git stash list,看看有没有误暂存的变更,若有,用git stash apply恢复。 - 运行
git branch -a列出所有本地和远程分支,切换到可疑分支检查是否有丢失的提交内容。
4. 用Git对象数据库恢复
只要没执行过git gc清理无用对象,丢失的提交还存在本地.git/objects目录里:
- 运行
git fsck --lost-found,命令会把所有未被引用的提交对象放到.git/lost-found/commits目录下。 - 用
git show <对象文件名>逐个查看这些对象的内容,找到目标提交后,执行git branch recover-branch <对象文件名>创建分支保存该提交,再合并到工作分支。
内容的提问来源于stack exchange,提问作者Hamid Ayub
相关产品推荐
相关产品推荐

