今天早上,当我拿起笔记本电脑的屏幕时,我的Windows 10崩溃并重新启动。没有特别的活动在进行,所以我认为没有重要的磁盘活动。
然而,我的一个主要Git回购在重置后崩溃了。这是我试过的:
$ git status
致命的:不是git存储库(或任何父目录):。git $ git init
在...... / .git / $ git status
致命的:不是git存储库(或任何父目录):。git 我认为我没有删除提交,因此从远程擦除和克隆应该可以正常工作。
在这种情况下,我可以问一下如何恢复现有的Git存储库(.git
目录仍然存在,chkdsk
报告正常)?
[添加]阅读this但不适用于我的情况(我无法恢复回购)
答案 0 :(得分:14)
作为kabanus said in a comment,您应该在继续之前保存所有内容(和/或使用其他现有克隆作为备份)。
但是,当Git抱怨这一点时,通常意味着文件.git/HEAD
已经丢失。如果您创建一个内容为HEAD
的新ref: refs/heads/master
文件,Git可能会恢复所有内容。
由于HEAD
是存储库中最活跃的文件,因此它最容易受到操作系统错误或电源故障的影响。当Git认为.git
目录是存储库时,它也是一个关键文件:如果目录包含名为HEAD
的文件(以及一些其他关键项),它是存储库;如果没有,它不是一个存储库。
答案 1 :(得分:1)
我有多个分支由于操作系统错误而崩溃(blood windows睡眠功能!)。所以我必须手动执行以下操作:
ref: refs/heads/master
)$> git branch -v
(这将告诉您所有损坏的分支)答案 2 :(得分:0)
另一种解决方法,当操作系统在GIT MERGE操作崩溃时为我解决了
答案 3 :(得分:0)
就我而言,HEAD
文件确实由于系统崩溃而损坏。
我刚刚再次将存储库克隆到一个新文件夹中,切换到我所在的分支,然后将.git
文件夹替换为我刚刚从克隆中创建的那个文件夹。
从那里开始,好像什么都没有发生。