啥情况
Local Branches 里面也找不到当前分支, 所有文件变成了untracked. 分支显示unknown branch/commit .

unknown branch/commit
发生之前
程序正在编译, 趁着编译的时间修改了一下程序, 按保存的时候发生蓝屏, 自动重启后就是这个样子了. 原因不明.
解决办法
查看源文件是好的, 编译能够正常通过. 只是蓝屏前按保存的那一些修改没有了. 程序在就好, 备份好源文件随便折腾一下看看能不能修好, 毕竟本地分支有很多commit还没有push.
进入git bash,
git status
查看当前仓库状态
发现分支名称正常显示(有救?), 但是所有文件变成了untracked.
查看一下log是否正常
显示当前分支损坏了.
查看一下.git文件夹下文件是否正常
损坏前提交的log还在, hash也能查到, 靠谱, 估计能修好
查看一下当前HEAD指向位置
显示指向seg, 目前看来一切正常, 找到seg, 看看seg里面是否指向当前commit的hash
这是什么鬼, 查看一下其他分支显示的内容是正常的
看来是找到病根了, 动个手术吧, 把log中的hash粘贴过来试试.
把标注的hash复制到seg中
哎? 你的小尾巴是怎么回事?!
再动个小手术, 切掉小尾巴(使用
dos2unix
命令)
好了, 站起来走两步.
我的天, 还没站起来就晕过去了
按照提示路径查看一下文件, 发现文件已经损坏, 截肢吧!
将seg的内容修改为上一次提交的hash值
再站起来看看.
多走两步
看来恢复的不错, 之前修改也都存在, 那么就在此提交就好了.
噗, 一口血吐了出来.
找到4cd5b3d23b34c6d9deee5c99a0ea419778c685文件, 发现内容全是0000. 删掉.
在次执行
git fsck --full
将出现问题的删除, 直到如下输出
再次提交, 提交成功!
执行git fsck --full
根据提示删除之前发生错误的那次提交的log
进入
.git\logs
, 打开HEAD, 删除错误的提交log.
.git\logs\refs\heads
下的提交log同理也要删除, (上图没有提示是因为我已经删除了)
再次执行
git fsck --full
都正常了, 出院.
ps: 以后还是经常push吧, 这样就可以直接使用"复活币"了.