误删本地Git仓库及GitHub文件如何恢复?命令行推送后文件丢失
恢复误删Git项目文件的可行方案
先别急,这种情况还是有机会找回文件的,我给你分Git层面和系统层面的方法一步步来试:
Git相关恢复方法(优先尝试)
这些方法是利用Git自身的日志和数据库来恢复,成功率比较高,如果你的修改曾经被Git追踪过,大概率能找回来:
检查Git引用日志(reflog)
Git的reflog会记录所有HEAD的变动,哪怕你做了硬重置或者删除了分支,这些记录都还在。先在项目目录下运行:git reflog你会看到一串带有提交ID、操作说明的记录,找到你误删文件之前的那个提交(比如显示
HEAD@{n}: commit: xxx或者HEAD@{n}: checkout: moving from...的条目),然后用对应的提交ID恢复:git reset --hard <你找到的提交ID>执行完这个命令,你的本地仓库应该就能回到那个提交的状态了。
查找Git中丢失的对象
如果你的修改还没来得及提交,或者提交没被reflog记录到,可以试试让Git扫描未被引用的对象:git fsck --lost-found这个命令会把找到的丢失对象放到项目目录下的
.git/lost-found/文件夹里,里面可能包含你未提交的文件内容。你可以逐个查看这些文件(比如用cat命令),把有用的内容复制出来重新整理。
系统级文件恢复(如果Git方法无效)
如果Git层面找不到任何痕迹,说明文件是被直接从磁盘删除且Git没来得及追踪,这时候需要用系统自带的工具或者第三方恢复软件:
Windows系统
- 如果开启了「文件历史记录」,可以直接通过控制面板的文件历史功能恢复删除的文件夹;
- 第三方工具可以用Recuva,选择项目所在的磁盘分区进行扫描,注意扫描时不要往这个分区写入新文件。
macOS系统
- 如果你开启了Time Machine备份,直接打开Time Machine找到对应时间点的项目文件夹恢复即可;
- 第三方工具推荐Disk Drill,扫描对应的磁盘分区,恢复被删除的文件。
Linux系统
- 可以用
testdisk工具,它能扫描磁盘恢复被删除的文件; - 如果是ext文件系统,也可以用
extundelete工具,指定分区进行恢复。
- 可以用
重要提醒:不管用哪种系统级恢复工具,现在绝对不要往项目所在的磁盘分区写入新内容(比如安装软件、下载文件、保存文档),否则被删除的文件可能会被新数据覆盖,彻底无法恢复。
内容的提问来源于stack exchange,提问作者juanddiaz13
相关产品推荐
相关产品推荐

