是否有可能检索未提交的git已删除的文件?

时间:2013-10-23 10:34:12

标签: git

我创建了一个全新的git repo,我想要同步到遥控器上的一个。不幸的是,在我添加遥控器作为原点之前,我在这个新的本地仓库中添加了一些新文件,而且在我拉动之前我忘了提交这些新文件。因此,本地没有初始提交。结果,当我拉动时,这些新文件被删除了。无论如何都要让他们回来?

4 个答案:

答案 0 :(得分:2)

由于您没有提交新文件,因此在日志中查找它们将无济于事。

剩下的是某种data recovery software,例如Recuva

答案 1 :(得分:1)

如果你做了git add,那么git已经为这些文件创建了blob个对象,但没有将它们连接到commit DAG。您可以使用git fsck命令查找未连接的对象,该命令应该为您提供blobtree个对象的列表。

您要查找的文件位于blob内,其内容可以使用git cat-file转储(IIRC,目前无法测试)。 git fsck命令不会显示blob引用的tree,因为这些不是未引用的,所以如果找不到您要查找的文件,您可能需要查看一些tree个对象中找到更多blob s。

答案 2 :(得分:0)

使用git log,找到您要回滚的最后一次提交,然后使用

git checkout $COMMIT_ID$

答案 3 :(得分:0)

也许这在你的情况下是无效的但是如果你碰巧使用eclipse并且删除的文件位于你的一个项目中,那么你总是可以做一个"从本地历史恢复...... "在日食。这节省了我几次。