git初始化后,我添加并提交了一些文件,做了一些修改,添加并提交。设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次存储库。 现在,我得到这个错误与克隆的存储库:

$ git status
error: bad index file sha1 signature
fatal: index file corrupt

除了获得一个新的存储库副本之外,还有什么方法可以修复这个问题吗?


当前回答

我也有这个问题,我试着用这个来解决:

rm -f .git/index
git reset

但这并没有起作用。解决方案? 出于某种原因,我在子目录中有其他。git文件夹。我删除了那些。git文件夹(不是主体),git重新设置。一旦它们被删除,一切又恢复正常了。

其他回答

这听起来像是一个糟糕的克隆。你可以试试下面的方法来获取(可能吗?)更多信息:

git fsck --full

您也可以尝试恢复到以前版本的文件(如果您使用的是windows操作系统)

由于上述解决方案给我带来了持续的问题,我使用了这个乏味的解决方案:

在其他地方克隆一个新的副本 将新的.git目录复制到包含我想提交的更改的(损坏的)repo中

成功了。顺便说一句,我做了一个sed项目根@hobs猜测。我吸取教训了。

我也有这个问题,我试着用这个来解决:

rm -f .git/index
git reset

但这并没有起作用。解决方案? 出于某种原因,我在子目录中有其他。git文件夹。我删除了那些。git文件夹(不是主体),git重新设置。一旦它们被删除,一切又恢复正常了。

如果问题是索引作为提交的staging区域(即.git/index),你可以简单地删除索引(如果你想要备份副本),然后将索引恢复到上次提交的版本:

在OSX/Linux/Windows(与Git bash):

rm -f .git/index
git reset

在Windows上(使用CMD而不是git bash):

del .git\index
git reset

(上面的reset命令与git reset——mixed HEAD相同)

你也可以使用底层的git读树来代替git重置。


如果问题出在packfile的索引上,你可以使用git index-pack来恢复它。