协慌网

登录 贡献 社区

使用 Git 时如何解决 “错误:索引错误–致命:索引文件损坏”

git init ,我添加并提交了一些文件,进行了一些更改,添加并提交了。设置 git 守护程序(在 WinXP 上的 Cygwin 下运行)并克隆存储库一次。现在,我在克隆的存储库中收到此错误:

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

除了获取存储库的新副本之外,还有什么方法可以解决此问题?

答案

如果问题在于索引是提交的暂存区(即.git/index ),则可以简单地删除索引(如果需要,可以创建备份副本),然后在上一次提交中将索引恢复为版本:

在 OSX / Linux 上:

rm -f .git/index
git reset

在 Windows 上:

del .git\index
git reset

reset命令与git reset --mixed HEAD相同)

您也可以使用低级管道git read-tree而不是git reset


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

您可能在项目根目录上用 sed 意外损坏了. git / index 文件(可能在重构吗?),如下所示:

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr "$SEARCHPATERN" "$PROJECTROOT")

为了避免将来发生这种情况,只需使用 grep / sed 忽略二进制文件即可:

sed -ri -e "s/$SEACHPATTERN/$REPLACEMENTTEXT/g" $(grep -Elr --binary-files=without-match "$SEARCHPATERN" "$PROJECTROOT")

我遇到了这个问题,我尝试用以下方法修复:

rm -f .git/index
git reset

但是它没有用。解决办法?由于某种原因,我在子目录中还有其他. git 文件夹。我删除那些. git 文件夹(不是主体),然后再次进行git reset删除它们后,一切都会恢复。