在git init
之后,我添加并提交了一些文件,进行了一些更改,添加并提交。设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次仓库。 现在,我得到这个错误与克隆库:如何在使用Git时解决“错误:错误索引 - 致命:索引文件损坏”
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
有什么办法来解决这个问题,比得到一个版本库的新副本等?
在git init
之后,我添加并提交了一些文件,进行了一些更改,添加并提交。设置git守护进程(在WinXP上的Cygwin下运行)并克隆一次仓库。 现在,我得到这个错误与克隆库:如何在使用Git时解决“错误:错误索引 - 致命:索引文件损坏”
$ git status
error: bad index file sha1 signature
fatal: index file corrupt
有什么办法来解决这个问题,比得到一个版本库的新副本等?
如果问题是与指数临时区域提交(即.git/index
),你可以简单地删除索引(作备份副本,如果你想),然后恢复索引版本的最后一次提交:
在OSX/Linux的:
rm -f .git/index
git reset
在Windows上:
del .git\index
git reset
(以上reset
命令相同git reset --mixed HEAD
)
,您也可以使用较低水平plumbinggit read-tree
代替git reset
。
如果问题是指数packfile,则可以使用git index-pack
恢复。
我不小心在`:Gstatus`中做了一个`:w!`(来自fugitive.vim)。这个答案为我挽救了很多头发。 – 2012-02-29 17:46:22
我知道我们不喜欢“我也是”消息 - 但是“我也是”。在Windows中相当于`erase/s .git \ index`,我也需要'erase .git \ index.lock`。 – 2012-06-15 07:23:53
我不得不使用rm .git/index,因为我收到一个模棱两可的警告使用-f – 2012-07-16 21:43:10
这听起来像一个不好的克隆。你可以尝试以下,以获得更多的信息(可能):
git fsck --full
您可能不小心损坏了的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")
您也可以尝试恢复以前版本的文件(如果你使用Windows操作系统)
我有这样的问题,我尝试TI与修复这个:
rm -f .git/index
git reset
但它没有工作。 解决方案? 出于某种原因,我在其他子目录中有.git文件夹。我再次删除这些.git文件夹(不是主体)和git reset
。一旦他们被删除,一切都再次运作。
在我的情况下,它被嵌套在网页/ CKEditor的git的文件夹/时,有一个.git
目录一个子目录下kcfinder
git status
error: bad index file sha1 signature
fatal: index file corrupt
fatal: 'git status --porcelain' failed in submodule web/ckeditor/kcfinder
可能出现此问题。要修复它,请检查是否有其他.git目录,然后将其删除并重试。
这对我有效。虽然我很好奇我开始在第一个地方得到错误的原因。当我昨天退出时,情况良好。今天早上登录,事实并非如此。
rm .git/index
git reset
由于上述解决方案,给我留下了持续的问题,我用这个沉闷的解决方案:
有没有诀窍。顺便说一句,我做了一个sed
作为@hobs猜测项目的根。学到了我的教训。
这很荒谬,但我只是重新启动了我的机器(mac),问题没有发生,就像从未发生过。我恨听起来像一个支持的家伙......
rm -f .git/index
git reset
更多信息以https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
注意的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
是这在克隆的存储库中,还是在原始存储库中?克隆命令是否输出任何错误? – 2009-07-12 11:27:04