如何解决“错误:糟糕的索引 – 致命:索引文件损坏”使用Git时
在git init ,我添加并提交了一些文件,进行了一些更改,添加和提交。 设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次仓库。 现在,我得到这个克隆的存储库的错误: 
 $ git status error: bad index file sha1 signature fatal: index file corrupt 
有什么办法解决这个问题,除了得到一个新的版本库?
 如果问题是索引作为提交的临时区域 (即.git/index ),则可以简单地删除索引(如果需要,请创build备份副本),然后在上次提交时将索引还原到版本: 
在OSX / Linux上:
 rm -f .git/index git reset 
在Windows上:
 del .git\index git reset 
  (上面的reset命令与git reset --mixed HEAD相同) 
 你也可以使用低层次的pipe道 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") 
这听起来像一个不好的克隆。 你可以尝试以下获取(可能?)更多的信息:
 git fsck --full 
在我的情况下,它是在web / ckeditor / kcfinder中嵌套的.git文件夹
 git status error: bad index file sha1 signature fatal: index file corrupt fatal: 'git status --porcelain' failed in submodule web/ckeditor/kcfinder 
我有这个问题,我试着解决这个问题:
 rm -f .git/index git reset 
 但它没有工作。  解决scheme ? 出于某种原因,我有其他.git文件夹在子目录中。 我删除这些.git文件夹(不是主体),并再次git reset 。 一旦他们被删除,一切都再次运作。 
 当其中一个子目录下有一个.git目录时,可能会发生此问题。 要修复它,检查是否有其他.git目录,并删除它们,然后再试一次。 
由于上述解决scheme给我留下了持续的问题,我使用了这个沉闷的解决scheme:
- 克隆在其他地方的回购新的副本
- 将新鲜的.git目录复制到包含我想提交的更改的(破坏)回购中
诀窍了。 顺便说一句,我做了@hobs猜测项目的根。 学到了我的教训。
这对我有效。 虽然我很好奇,我开始得到错误的原因。 当我昨天退出时,情况很好。 今天早上login,事实并非如此。
 rm .git/index git reset 
这是荒谬的,但我刚刚重新启动我的机器(MAC),问题没有了,就像从未发生过。 我讨厌听起来像一个支持的人…
您也可以尝试恢复到以前版本的文件(如果您使用的是Windows操作系统)