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
除了获得一个新的存储库副本之外,还有什么方法可以修复这个问题吗?
当前回答
由于上述解决方案给我带来了持续的问题,我使用了这个乏味的解决方案:
在其他地方克隆一个新的副本 将新的.git目录复制到包含我想提交的更改的(损坏的)repo中
成功了。顺便说一句,我做了一个sed项目根@hobs猜测。我吸取教训了。
其他回答
当其中一个子目录下有一个.git目录时,就会出现此问题。要修复此问题,请检查是否有其他.git目录,并删除它们并重试。
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重置
您也可以尝试恢复到以前版本的文件(如果您使用的是windows操作系统)
我也有这个问题,我试着用这个来解决:
rm -f .git/index
git reset
但这并没有起作用。解决方案? 出于某种原因,我在子目录中有其他。git文件夹。我删除了那些。git文件夹(不是主体),git重新设置。一旦它们被删除,一切又恢复正常了。
如果混合使用不同的git版本,回购可能会被损坏。
新git版本所涉及的本地存储库与旧git版本不向后兼容。新的git回购看起来像旧的git版本(在我的例子中,git 2.28破坏了git 2.11的回购)。
更新旧的git版本可能会解决这个问题。