2011-10-06 111 views
10

我的笔记本电脑的硬复位即冻结一个git的承诺后,我有我的时候对我的git仓库输入任何命令以下错误:如何恢复损坏的git存储库?

$ git status 
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument 

反正是有恢复我的git仓库?

我没有找到以下两个问题提出了解决方案:

编辑:我没有发现什么引起我的git仓库,也没有任何解决方案的腐败恢复它......我终于从我的SVN仓库开始了一个新的克隆!

+2

这里的第一步是检查你的文件系统。这个错误很奇怪。你有没有'fsck'或者你的操作系统有什么?在做其他事情之前做一个**备份**。 – Mat

+0

几乎所有的答案都假设可以简单地从一些不可破坏的远程起源重新克隆。这就是问题......如果你是**的起源,并且你已经损坏了,该怎么办?对。所以,在这里:'git-repair'是一个运行'git fsck'的程序,并且很难解决它遇到的任何问题。 https://git-repair.branchable.com/看起来相当有用,尽管你最终可能不得不从备份中复制(如果可以的话)对象(你有备份,对吗?),它应该可以节省你大量的时间通过尽可能的挽回并留下真正的工作,而不是大量的自动化任务。没有从属关系等 –

回答

2

对我而言,以上答案都不起作用。我刚刚重新克隆了我的git回购,一切都很顺利。在克隆之前,我打开了所有被更改的文件,并在拉出之后重写了它们。

这就是为什么你应该经常提交:)。

1

您是否最近将存储库推送到任何地方,比如github或bitbucket?您可以获得另一个克隆并复制对象目录。

否则:

了解究竟有多少运行:

git fsck 
git branch -a 
git branch -a | xargs -n 1 git log -1 
git reflog 

通过引用日志,看看有哪些的一个,你可以从做一个成功的记录。希望这只是你最近犯下的错误,或者是它的其中一棵树。

希望这会有帮助

+1

当然,我可以重新开始一个新的克隆,希望我离我的svn主干不太远(我的本地回购是一个git-svn克隆)。但我想知道这种问题是否能够恢复,以及它的起源是什么,以避免将来再生它。 – greydet