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

啥情况

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


unknown branch/commit
突然断电导致git分支错误解决办法_第1张图片
untracked file

发生之前

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

解决办法

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

突然断电导致git分支错误解决办法_第2张图片
image.png

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

查看一下log是否正常

突然断电导致git分支错误解决办法_第3张图片
image.png

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

突然断电导致git分支错误解决办法_第4张图片
image.png
突然断电导致git分支错误解决办法_第5张图片
image.png

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

突然断电导致git分支错误解决办法_第6张图片
image.png
突然断电导致git分支错误解决办法_第7张图片
image.png

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

突然断电导致git分支错误解决办法_第8张图片
image.png
突然断电导致git分支错误解决办法_第9张图片
image.png

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

突然断电导致git分支错误解决办法_第10张图片
image.png
突然断电导致git分支错误解决办法_第11张图片
就你不一样

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


image.png

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

突然断电导致git分支错误解决办法_第12张图片
image.png

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

突然断电导致git分支错误解决办法_第13张图片
image.png

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


突然断电导致git分支错误解决办法_第14张图片
image.png

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


突然断电导致git分支错误解决办法_第15张图片
image.png

将seg的内容修改为上一次提交的hash值
突然断电导致git分支错误解决办法_第16张图片
image.png

再站起来看看.

突然断电导致git分支错误解决办法_第17张图片
image.png

多走两步


image.png
突然断电导致git分支错误解决办法_第18张图片
image.png

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

突然断电导致git分支错误解决办法_第19张图片
image.png

突然断电导致git分支错误解决办法_第20张图片
image.png

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

突然断电导致git分支错误解决办法_第21张图片
image.png

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

突然断电导致git分支错误解决办法_第22张图片
image.png

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

image.png

再次执行 git fsck --full

突然断电导致git分支错误解决办法_第23张图片
image.png

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

你可能感兴趣的:(突然断电导致git分支错误解决办法)