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

执行Git Pull (rebase)后项目全部文件被删除,如何恢复丢失的代码?

Git rebase后文件丢失恢复方案

优先操作:禁止执行任何写入类Git命令

在完成恢复前,不要执行git add、git commit、git pull、git checkout、新的rebase等操作,避免Git覆盖存储的历史对象导致永久丢失。

最高成功率恢复方法:从reflog恢复操作前的提交

Git会记录近90天内所有HEAD的移动记录,rebase操作并不会删除旧提交,仅会修改HEAD指向:

  1. 执行命令查看操作日志:git reflog
  2. 在输出的列表中找到你执行pull rebase操作之前的那条记录,对应的哈希值一般格式为HEAD@{n}(n为数字,通常最近的操作在最上面,rebase前的记录大概率是HEAD@{1})
  3. 执行重置命令恢复到操作前的状态:git reset --hard 你找到的对应哈希值
    执行完成后即可查看项目文件,90%以上的这类情况都可以通过这个方法完全恢复。

备选恢复方法:从Git对象直接恢复文件

如果reflog没有对应记录,可以直接用你操作日志里已经查到的文件哈希导出文件:

  • 恢复src/index.ts:git cat-file -p f0ae144245ab480bd437b97be9d58d267399b602 > ./src/index.ts
  • 恢复dist/index.js:git cat-file -p d6cf00e78b8901535facadfd2f1b02afefe5ec2f > ./dist/index.js

如果还有其他丢失的文件,可以执行git fsck --lost-found扫描所有悬空的Git对象,所有扫描到的文件都会存放在项目根目录的.git/lost-found/blob/路径下,逐个查看文件内容即可找回你需要的其他代码文件。

额外兜底方案:IDE本地历史恢复

如果你使用VSCode、WebStorm、IDEA这类IDE开发,可以右键项目根目录,找到「本地历史」/「Local History」选项,IDE会独立记录所有文件的修改记录,不受Git操作影响,可以直接选择对应时间点的版本恢复文件。

后续操作建议

  • 所有涉及rebase、merge、reset这类会修改提交链的操作前,先创建备份分支:git branch backup_xxxxxx,操作出问题可以直接切回备份分支
  • 推送失败时先查看报错信息,如果是「远程分支存在本地没有的提交」类错误,先执行git fetch拉取远程提交,对比本地和远程的差异后再选择merge或者rebase操作,不要直接执行pull rebase。

内容的提问来源于stack exchange,提问作者King Of Chads

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:03