如何在本地恢复`.git / index`?

时间:2016-07-08 20:26:48

标签: git recovery git-index

我意外删除了.git/index,有没有办法恢复它?它已被永久删除。我还没有投入任何东西。

3 个答案:

答案 0 :(得分:32)

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

git reset         # re-scan the working directory
git add -u        # update the index

答案 1 :(得分:3)

您可以使用git reset恢复上次结帐时的索引。您之后添加的任何内容仍然会被添加,它位于存储库中,但索引是唯一记录路径和内容关联的位置。您可以将git fsck drop unreachable对象放入丢失的找不到的目录中,请参阅its docs,然后通过熟悉区域的最快路径就是将内容放回到工作树中并重新添加, git不会重复内容,但会恢复索引条目。

答案 2 :(得分:2)

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

如果您丢失了git add编辑过的任何文件,可以浏览./git/objects(find .git/objects/ -type f |sed 's:\.git/objects/::; s:/::' ),用{{1}检查每个文件的内容一旦你找到丢失的那个,就把输出重定向到一个文件。

(当你git cat-file -p $the_hash时,文件名条目转到git add,文件内容存储在.git/index .Git索引由一个可能的树的文件名条目组成在.git/objects/时创建的对象。您可以使用commit查看索引的人类可读表示。