计算机崩溃后Git存储库坏了

时间:2016-10-25 09:32:46

标签: git

我在睡觉后关掉电脑,发现这是一次硬重置,而不是睡觉。我的git repo坏了。幸运的是,我已经承诺并推动了所有内容,因此我只需要将其重置为原始状态。这是我运行git fsck --full

时得到的结果
$ git fsck --full
error: Invalid HEAD
error: inflate: data stream error (unknown compression method)
error: unable to unpack 0485493a56ad42802b72cee71522666628294e3d header
error: inflate: data stream error (unknown compression method)
fatal: loose object 0485493a56ad42802b72cee71522666628294e3d (stored in .git/objects/04/85493a56ad42802b72cee71522666628294e3d) is corrupt

我在betterfmgr分支上,但.git/refs/heads/betterfmgr是一个空文件。知道怎么解决吗?我可以再次克隆它,但我需要复制数以千计的node_modules并复制.idea个文件。

2 个答案:

答案 0 :(得分:1)

如果按照你的说法推送了所有内容,只需在另一个目录中创建一个git clone并删除损坏的repo。

答案 1 :(得分:0)

您可以尝试以下操作:从远程存储库的新克隆中获取.git/目录的全新且理智的副本

我会尝试说明这个想法:

git clone sources_server:repo newdir/   # make a git clone, in a new directory

cd newdir/
git checkout betterfmgr  # set active branch to 'betterfmgr'
cd ..

cd olddir/   # go into your original working copy,
             # with current node_modules/ dir, .idea files, etc ...

mv .git/ .git.old/

mv ../newdir/.git .git   # get ".git/" folder from other repository

# now check if everything looks like you expected :
git status ...
git diff ...
git difftool -d ...
idea ...

# if all looks well, remove old dir :
rm -rf .git.old

请注意,这会丢失您的本地分支和您的reflog。