Answers:
如果问题在于索引是提交的暂存区域(即.git/index
),则可以简单地删除索引(如果需要,可以创建备份副本),然后在上一次提交中将索引恢复为版本:
在OSX / Linux上:
rm -f .git/index
git reset
在Windows上:
del .git\index
git reset
(reset
上面的命令与相同 git reset --mixed HEAD
)
您也可以使用较低级别的管道 git read-tree
代替git reset
。
如果问题出在packfile的索引上,则可以使用进行恢复git index-pack
。
:w!
在:Gstatus
(来自fugitive.vim)中做了一个。这个答案节省了我很多头发。
erase /s .git\index
,我也需要erase .git\index.lock
。
git reset --keep
代替使用会更安全吗?在Tower Git速查表中,解释为:将HEAD指针重置为先前的提交并保留未提交的本地更改
git reset --keep
是更安全的形式git reset --hard
; git reset --mixed
完全不接触workdir。
您可能在项目根目录上用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/index
,则可以随时将其删除并使用来重新创建git reset
(不带--hard
!)。
sed
使用类似以下的方法将您的内容反转,find .git/ -type f -exec sed -i 's/Legislator/Politician/g' {} \;
如果您.git/
的腐败太严重而无法使用,则可能会有所帮助git reset
。或者,也许您想还原现有内容.git/index
而不删除它。当然,如果您的原始代码或索引中已经包含“立法者”,则此操作将失败。
sed
通过更换我new_string
用我的old_string
!
我遇到了这个问题,我尝试用以下方法修复:
rm -f .git/index
git reset
但是它没有用。解决办法?由于某种原因,我在子目录中还有其他.git文件夹。我git reset
再次删除那些.git文件夹(不是主体)。删除它们后,一切都会恢复。
由于上述解决方案给我带来了持续的问题,因此我使用了这种乏味的解决方案:
做到了。顺便说一句,sed
正如@hobs猜测的那样,我在项目根目录上做了一个。吸取了我的教训。
这对我有用。虽然我很好奇我最初开始出现错误的原因。当我昨天注销时,很好。不是今天早上登录。
rm .git/index
git reset
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文件夹从新文件夹复制到repo的旧文件夹,在那里替换.git。
rm -f .git/index
git reset
有关更多信息,请访问https://www.chris-shaw.com/blog/quick-fix-for-git-corrupt-index
这太荒谬了,但是我刚刚重新启动了计算机(mac),问题就消失了,好像从未发生过。我讨厌听起来像个支持者...