我意外地删除了 .git/index
,有没有办法恢复它?它已经被永久删除了。我还没有提交过任何东西。
要重新构建索引文件,您可以尝试这两个命令:
git reset # re-scan the working directory
git add -u # update the index
git reset
命令将索引恢复到最后一次检出时的状态。自那时以来添加的任何内容都已添加到存储库中,但是索引是记录路径和内容关联的唯一位置。您可以使用 git fsck 将不可访问的对象丢弃到一个 lost'n'found 目录中,详情请参见 它的文档,然后最快的方法就是将内容放回工作树并再次添加,git 不会重复内容,但会恢复索引条目。git
(你可以尝试查看垃圾箱目录或任何文件系统提供的恢复手段)。但只要你添加了某些内容或进行了其他需要索引的操作,就会得到一个新的索引。git
的文件,你可以浏览 ./git/objects 目录(find .git/objects/ -type f |sed 's:\.git/objects/::; s:/::'
),使用 git cat-file -p $the_hash
检查每个文件的内容,一旦找到丢失的文件,将输出重定向到一个文件中。git add
时,文件名条目会被添加到 .git/index
文件中,并且文件内容会被存储在 .git/objects/
目录中。Git 索引由树对象的文件名条目组成,在你执行 commit
时创建。你可以使用 git ls-files --stage
命令查看索引的人类可读表示形式)。git cherry-pick --abort
命令会清空索引!我使用了您的 find | sed
命令来恢复索引。谢谢! - legends2k