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
删除它们后,一切都会恢复。