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

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

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


当前回答

rm -f .git/index
git reset

更多信息请访问https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index

其他回答

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

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

rm -f .git/index
git reset

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

如果混合使用不同的git版本,回购可能会被损坏。

新git版本所涉及的本地存储库与旧git版本不向后兼容。新的git回购看起来像旧的git版本(在我的例子中,git 2.28破坏了git 2.11的回购)。

更新旧的git版本可能会解决这个问题。

克隆远程repo并将.git文件夹从它替换到有问题的本地目录解决了这个问题。

你可能不小心在你的项目根目录上用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")