如何解决“错误:坏索引 – 致命:使用 Git 时索引文件损坏”
-
12-09-2019 - |
题
后 git init
, ,我添加并提交了一些文件,做了一些更改,添加并提交。设置 git 守护进程(在 WinXP 上的 Cygwin 下运行)并克隆存储库一次。现在,我在克隆存储库时收到此错误:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
除了获取存储库的新副本之外,还有其他方法可以解决此问题吗?
其他提示
您可能不小心损坏了的sed你的项目的根(重构吧?)有类似的git的/索引文件:
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
我有这样的问题,我尝试TI解决与此:
rm -f .git/index
git reset
但它没有工作。的将溶液强>?
出于某种原因,我不得不别人子目录git的文件夹。我再次删除这些文件夹git的(而不是本金)和git reset
。一旦他们被删除了,一切重新工作。
这为我工作。虽然我很好奇的原因,我开始摆在首位的错误。当我昨天退出,这是罚款。登录今天上午,事实并非如此。
rm .git/index
git reset
由于上述解决方案给我留下了持续的问题,我使用了这个乏味的解决方案:
- 在其他地方克隆存储库的新副本
- 将新的 .git 目录复制到包含我想要提交的更改的(损坏的)存储库中
成功了。顺便说一句,我做了一个 sed
正如 @hobs 猜测的那样,在项目根目录上。吸取了我的教训。
请注意对于git的子模块的用户 - 这里的解决方案将不会为你工作的,是
。让我们假设你有一个名为dev
父库,例如,你的子模块库称为api
。
如果你是api
的内部,你会得到在这个问题提到的错误:
error: bad index file sha1 signature
fatal: index file corrupt
在index
文件将不被一个.git
文件夹内。事实上,.git
甚至不会是一个文件夹 - 这将将与真正的git的数据的这个仓库位置的文本文档。可能是这样的:
~/dev/api $ cat .git
gitdir: ../.git/modules/api
所以,与其rm -f .git/index
,你需要这样做:
rm -f ../.git/modules/api/index
git reset
或,更一般地,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index
git reset
当存在子目录之一下方的.git
目录可以出现此问题。为了解决这个问题,检查是否有其他git的目录存在,并删除它们,然后再试一次。
我正面临同样的问题,在重命名git的/索引的索引文件,然后GIT中复位工作我。
rm -f .git/index
git reset
在 HTTPS更多信息:// WWW。 chris-shaw.com/blog/quick-fix-for-git-corrupt-index
这是荒谬的,但我只是已经重新启动我的机器(MAC),问题就消失了喜欢它从来没有发生过。我恨听起来像一个支持的家伙...
您也可以尝试恢复以前版本的文件(如果你使用Windows操作系统)