git初始化后,我添加并提交了一些文件,做了一些修改,添加并提交。设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次存储库。 现在,我得到这个错误与克隆的存储库:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
除了获得一个新的存储库副本之外,还有什么方法可以修复这个问题吗?
git初始化后,我添加并提交了一些文件,做了一些修改,添加并提交。设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次存储库。 现在,我得到这个错误与克隆的存储库:
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
除了获得一个新的存储库副本之外,还有什么方法可以修复这个问题吗?
当前回答
这对我很管用。虽然我很好奇的原因,我开始得到错误在第一个地方。我昨天注销的时候,一切正常。今早登录时发现不是。
rm .git/index
git reset
其他回答
rm -f .git/index
git reset
更多信息请访问https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
你可能不小心在你的项目根目录上用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文件夹。
你需要回到你的主回购。其中,删除。git/worktrees/<name_of_tree>/index
然后按照其他答案运行git reset。
在Windows PowerShell上,应该是这样
rm -Force .git/index
git reset
git子模块用户注意——这里的解决方案不适合你。
例如,假设您有一个名为dev的父存储库,而子模块存储库名为api。
如果你在API内部,你得到了这个问题中提到的错误:
错误:错误的索引文件sha1签名 致命:索引文件损坏
索引文件不会在.git文件夹中。事实上,.git甚至不会是一个文件夹——它将是一个文本文档,其中包含这个存储库的真正。git数据的位置。可能是这样的:
好吧,滚出去 gitdir: - . git / modules /火
所以,你需要这样做,而不是rm -f .git/index:
Rm -f ../.git/modules/api/index git重置
或者,更一般地说,
rm -f ../.git/modules/INSERT_YOUR_REPO_NAME_HERE/index . xml git重置