34

不小心删.git/index了,有什么办法可以恢复吗?它被永久删除。我还没有做出任何承诺。

4

3 回答 3

54

要重建索引文件,您可以尝试以下两个命令:

git reset         # re-scan the working directory
git add -u        # update the index
于 2016-07-09T01:48:50.107 回答
5

您可以使用 恢复上次结帐时的索引git reset。从那时起您添加的任何内容仍然会添加,它在存储库中,但索引是唯一记录路径和内容关联的地方。您可以让 git fsck 将无法访问的对象放入 lost'n'found 目录,查看其文档,然后熟悉领域的最快路线是将内容放回工作树并再次添加,git不会复制内容但它将恢复索引条目。

于 2016-07-09T01:44:17.547 回答
4

我认为这是不可能的,git无论如何都不可能(您可以尝试查看垃圾箱目录或文件系统提供的任何恢复方式)。但是,只要您git add做某事或做其他需要索引的事情,您就会得到一个新的索引。

如果您丢失了您git add编辑的任何文件,您可以通过 ./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)。

于 2016-07-08T20:39:36.520 回答