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

GitHub新手误执行git rm -r <mydirectory>丢失代码,求助恢复

别慌!你的代码大概率能找回来

作为踩过同样坑的开发者,我完全懂你误删代码时的崩溃——先稳住,Git其实留了不少后路,咱们一步步来:

第一步:从Git历史快照恢复(最直接的方法)

如果那些丢失的文件曾经被提交过(哪怕是没推到远程的临时提交),直接从历史里捞回来就行:

  • 先查找包含这个目录的所有历史提交:
    git log --all -- <mydirectory>
    
    这个命令会列出所有涉及该目录的提交记录,找到你丢失工作对应的最新commit哈希值(比如a1b2c3d)。
  • 把该提交里的目录恢复到当前工作区:
    git checkout <commit-hash> -- <mydirectory>
    
    执行完这个命令,你丢失的文件应该就回到工作区了。

第二步:如果没提交过?试试Git的“丢失和找回”工具

如果那些未备份的工作还没来得及提交,但曾经被git add到暂存区过,或者Git在操作时自动生成了快照,用git fsck能帮你找到这些“孤儿”对象:

  • 先运行命令扫描所有未被引用的Git对象:
    git fsck --lost-found
    
    这个命令会在.git/lost-found/objects目录下生成一堆以哈希命名的文件,这些就是Git悄悄保留的临时快照。
  • 逐个查看这些对象的内容,找到你需要的文件:
    git cat-file -p <哈希值>
    
    比如你看到某个对象是你要的Swift文件内容,就可以把它导出:
    git cat-file -p <哈希值> > 你要恢复的文件名.swift
    

重要警告:现在别乱操作!

在完成恢复之前,绝对不要执行git commit、git add、git reset --hard这类会修改Git数据库的命令,避免覆盖掉还能恢复的临时对象。

最后给你提个醒(血的教训)

以后要撤销提交,千万别用git rm -r这种暴力操作:

  • 要撤销最近n个提交(保留工作区文件):用git reset HEAD~n
  • 要彻底撤销最近n个提交(清空工作区):用git reset --hard HEAD~n
  • 如果已经推送到远程仓库,更推荐用git revert生成反向提交,避免影响协作的小伙伴。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 18:28:00