美文网首页Git
突然断电导致git分支错误解决办法

突然断电导致git分支错误解决办法

作者: RGW | 来源:发表于2017-08-04 11:34 被阅读102次

啥情况

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


unknown branch/commit untracked file

发生之前

程序正在编译, 趁着编译的时间修改了一下程序, 按保存的时候发生蓝屏, 自动重启后就是这个样子了. 原因不明.

解决办法

查看源文件是好的, 编译能够正常通过. 只是蓝屏前按保存的那一些修改没有了. 程序在就好, 备份好源文件随便折腾一下看看能不能修好, 毕竟本地分支有很多commit还没有push.
进入git bash,
git status查看当前仓库状态

image.png

发现分支名称正常显示(有救?), 但是所有文件变成了untracked.

查看一下log是否正常

image.png

显示当前分支损坏了.
查看一下.git文件夹下文件是否正常

image.png image.png

损坏前提交的log还在, hash也能查到, 靠谱, 估计能修好
查看一下当前HEAD指向位置

image.png image.png

显示指向seg, 目前看来一切正常, 找到seg, 看看seg里面是否指向当前commit的hash

image.png image.png

这是什么鬼, 查看一下其他分支显示的内容是正常的

image.png 就你不一样

看来是找到病根了, 动个手术吧, 把log中的hash粘贴过来试试.
把标注的hash复制到seg中


image.png

哎? 你的小尾巴是怎么回事?!

image.png
再动个小手术, 切掉小尾巴(使用dos2unix命令) image.png

好了, 站起来走两步.
我的天, 还没站起来就晕过去了


image.png

按照提示路径查看一下文件, 发现文件已经损坏, 截肢吧!


image.png
将seg的内容修改为上一次提交的hash值 image.png

再站起来看看.

image.png

多走两步


image.png image.png

看来恢复的不错, 之前修改也都存在, 那么就在此提交就好了.
噗, 一口血吐了出来.

image.png image.png
找到4cd5b3d23b34c6d9deee5c99a0ea419778c685文件, 发现内容全是0000. 删掉.
在次执行git fsck --full
将出现问题的删除, 直到如下输出 image.png

再次提交, 提交成功!
执行git fsck --full

image.png
根据提示删除之前发生错误的那次提交的log
进入.git\logs, 打开HEAD, 删除错误的提交log.
.git\logs\refs\heads下的提交log同理也要删除, (上图没有提示是因为我已经删除了) image.png
再次执行git fsck --full image.png

都正常了, 出院.
ps: 以后还是经常push吧, 这样就可以直接使用"复活币"了.

相关文章

网友评论

    本文标题:突然断电导致git分支错误解决办法

    本文链接:https://www.haomeiwen.com/subject/hccvlxtx.html