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

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

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


当前回答

当其中一个子目录下有一个.git目录时,就会出现此问题。要修复此问题,请检查是否有其他.git目录,并删除它们并重试。

其他回答

当其中一个子目录下有一个.git目录时,就会出现此问题。要修复此问题,请检查是否有其他.git目录,并删除它们并重试。

现有的答案都不适合我。

我使用的是工作树,所以没有。git文件夹。

你需要回到你的主回购。其中,删除。git/worktrees/<name_of_tree>/index

然后按照其他答案运行git reset。

在Windows PowerShell上,应该是这样

rm -Force .git/index
git reset

由于上述解决方案给我带来了持续的问题,我使用了这个乏味的解决方案:

在其他地方克隆一个新的副本 将新的.git目录复制到包含我想提交的更改的(损坏的)repo中

成功了。顺便说一句,我做了一个sed项目根@hobs猜测。我吸取教训了。

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

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

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