误删Git仓库所在的项目根目录,如何恢复?
恢复误删的Git主目录及仓库文件
嘿,这个问题我之前也帮不少开发者解决过——当你把整个Git主目录(连带着里面的.git文件夹一起删了),Git根本找不到仓库的核心数据,所以git checkout肯定会抛出fatal error: not a git repo: .git的报错。别慌,咱们分几种情况来针对性解决:
情况1:你有远程仓库(比如GitHub/GitLab/Gitee)
这是最幸运的情况,直接重新克隆远程仓库就能恢复所有已推送的内容:
- 打开终端,导航到你原来存放仓库的父目录
- 执行命令:
git clone <你的远程仓库URL> - 如果之前有未推送到远程的本地修改,那这些修改大概率找不回来了(除非你之前把修改存到了其他地方,比如U盘、另一个本地克隆),以后记得及时推送或者本地备份未提交的变更。
情况2:你有本地备份/其他克隆版本
如果你在本地其他位置有这个仓库的完整备份(比如复制过整个仓库文件夹到U盘、另一个硬盘分区),那操作很简单:
- 把备份里的整个仓库文件夹(包括
.git文件夹)复制回原来的位置;或者只复制备份里的.git文件夹到你原来的目录,然后执行git checkout .来恢复所有文件到最新提交的状态。
情况3:没有任何远程/本地备份
这种情况就得靠系统级的文件恢复工具了,关键提醒:删除后别再往被删除目录所在的磁盘分区写入任何新数据,不然会覆盖被删除的文件,降低恢复成功率:
- Windows:先去回收站看看能不能直接恢复;如果回收站清空了,用系统自带的「文件历史记录」(提前开启过的话),或者用第三方工具比如Recuva、Disk Drill。
- macOS:打开「时间机器」,找到删除前的时间点,恢复整个仓库文件夹;如果没开时间机器,试试第三方工具比如Disk Drill。
- Linux:如果你的磁盘用的是ext系列文件系统,可以用
extundelete工具(需要先安装,比如sudo apt install extundelete),执行类似extundelete /dev/sdX --restore-directory /path/to/your/repo的命令(注意替换成你的磁盘路径和仓库原来的路径)。
事后建议
为了避免下次再遇到这种糟心事,给你两个小建议:
- 养成定期推送代码到远程仓库的习惯,哪怕是私人仓库也能当备份用;
- 偶尔把
.git文件夹压缩备份到其他位置,或者用git clone --bare创建一个裸仓库作为本地备份。
内容的提问来源于stack exchange,提问作者kvinbabbar
相关产品推荐
相关产品推荐

