2013-12-08 95 views
1

我有我几个星期前做的git commit的散列。我试着检查出来,但它说,哈希“不匹配任何已知的git文件”。我也在git reflog中查找它,但是在那里没有看到它。我没有看到我在reflog中提交的最早的提交。失去了一个git commit

我无法在Gitorious的远程存储库中找到丢失的提交。但是,我确实看到了我在Gitorious做出的最早的提交,而不是我正在寻找的提交。

回答

2

那么,提交不再存在于您的数据库中,这是不幸的。以防万一你有散列错误开始git lost-found

如果它因为垃圾被收集而消失,那么您的运气不好。如果因任何其他原因(磁盘损坏,文件系统错误等)而消失,您可能仍然能够找到该提交中的斑点。

git fsck可以告诉你git的内部数据库是否有问题。如果没有任何东西,试试这个:How to recover LOST WORK resulting from the use of git?

+0

so old commitits get garbage collecting?您如何确保保留旧提交,并且您知道如何确定垃圾回收之前的保留期限? – user994165

+0

@ user994165为了澄清,只有无法访问的对象被垃圾回收。作为某个分支的祖先的提交可以访问,并且永远不会被垃圾收集。但是,例如,如果您进行了提交,然后通过重置为父项来“撤消”该提交,则该提交可能会被垃圾收集。 – tom