如何恢复被杀毒软件损坏的本地Git仓库?含未推送本地分支
本地Git仓库损坏,未推送分支恢复求助
我不是Git专家,下面的描述可能存在错误假设。
我们使用Git进行源代码管理,前端工具用的是SourceTree。昨天工作时,公司的杀毒软件Sentinal One将SourceTree识别为潜在威胁并拦截,随后弹出提示称“已修复该问题”。不清楚它具体执行了什么操作,但我的本地Git仓库因此损坏:
- 大量源文件丢失
.git文件夹内缺少HEAD、Fetch_Head、Orig_Head、config和index等必要文件- SourceTree无法识别该仓库,执行
git branch命令也提示这不是有效的Git仓库
我已经备份了损坏的仓库,确保尝试操作出错时能回退到当前状态。
已尝试的操作
- 从其他无关仓库复制了HEAD文件,
git branch命令现在能识别这是有效目录,并显示部分分支,但我本地私有的两个未推送分支(原本计划待成熟后推送到远程仓库)未显示,这两个分支包含大量工作内容,重新克隆远程仓库会丢失这些内容。 - 运行
git reflog命令,可以看到切换这两个分支的操作记录,日志看起来完整。但执行git checkout feature/myfeature时,提示did not match any file(s) known to Git。 - 执行
git fsck命令,报错:
随后出现大量关于缺失blobs、悬空提交和树结构的报错,可见本地特性分支仍以某种形式存在。refs/heads/feature/myfeature invalid reflog entry
我的猜测是:实际源代码仍保存在仓库中,只是SourceTree被突然拦截导致元数据损坏。我查到的资料都是介绍如何自动修剪源数据以匹配元数据,但我需要相反的操作——从源数据重建元数据。
这种操作是否可行?有没有具体的恢复建议?
内容的提问来源于stack exchange,提问作者FunkyDexter
相关产品推荐
相关产品推荐

