解决Git报错Failed to resolve HEAD as a valid ref.

2,989 阅读2分钟

这是一堆废话
由于我司这台性能强悍小主机的配置过于高端,今天下午在提交代码的时候蓝屏了,重启完发现Git乱了,整个项目的文件都丢了,故搞之

解决办法在最后,中间是一堆废话

image.png

排查错误

首先看下分支,结果不让看

PS F:\Project\font> git branch
fatal: Failed to resolve HEAD as a valid ref.

然后我尝试着提交,结果不让提

PS F:\Project\font> git add .
PS F:\Project\font> git commit -m 'test!!!'
fatal: cannot lock ref 'HEAD': unable to resolve reference 'refs/heads/wangys': reference broken

看下git的日志吧,结果还是不让看

PS F:\Project\font> git log
fatal: your current branch appears to be broken

运行下git的一致性检查吧,看看能查出来啥,结果啥都没查出来

PS F:\Project\font> git fsck --full        
Checking object directories: 100% (256/256), done.
Checking objects: 100% (22027/22027), done.

根据上面的报错信息大体可以确定错误原因在哪了

问题原因: 在 .git\refs\heads\xxx(当前分支) 出现乱码

解决办法

  1. .git\logs\refs\heads\当前分支文件下找到最后一条log信息
f5f0450fe7a24db203305ce96057face9e7392c8 c9d57292d05d6ba155b2e5c90603718ea42050da YuShengSenior <Kingsun997@163.com> 1620892929 +0800	commit: 解决bug #412589 #210245 #320145

这个c9d57292d05d6ba155b2e5c90603718ea42050dahash值就是我们需要的
2. 把这个值复制到\.git\refs\heads\当前分支文件下,保存
3. 操作完之后我们可以刷新下vscode的git,可以看到文件都被恢复到蓝屏提交那次了

如果你当前工作区有暂存的文件,可以使用git reset --soft HEAD^撤销上次的commit的文件,这样我们就可以继续愉快的搬砖了