如何恢复损坏的git仓库?

12
在我的笔记本电脑进行 git 提交后,因为出现了卡死的情况,我进行了一次硬重置。但是,当我在 git 仓库中输入任何命令时,都会出现以下错误:
$ git status 
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument

有没有办法恢复我的git仓库?

我在以下两个问题中都没有找到解决方案:

编辑:我没有找到导致git仓库损坏的原因,也没有找到任何恢复它的方法...最终我从我的SVN仓库开始了一个新的克隆!


2
这里的第一步是检查您的文件系统。那个错误很奇怪。你有没有运行 fsck 或者你的操作系统提供的其他工具?在进行任何其他操作之前,务必进行备份 - Mat
几乎所有的答案都假设可以从某个不可破坏的远程源重新克隆。问题在于,如果你就是源,并且你已经损坏了呢?没错,在这里:git-repair是一个程序,它将运行git fsck并尝试非常努力地修复遇到的任何问题。https://git-repair.branchable.com/ 它似乎非常有能力,虽然你可能最终不得不从备份中复制(如果你能的话!)对象,但它应该通过挽救任何可以挽救的东西并留下真正的工作而不是大量的自动化任务来节省你很多时间。无关联等。 - underscore_d
2个回答

2

你最近是否将仓库推送到像Github或Bitbucket这样的地方?如果是,你可以获取另一个克隆并复制对象目录。

否则:

查看以下有多少个运行:

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

通过reflog,查看哪个提交能够成功记录。希望只有您最新的提交或其树有问题。
希望这可以帮到您。

1
当然,我可以重新开始一个新的克隆,希望我离我的 svn 主干不会太远(我的本地存储库是一个 git-svn 克隆)。但我在想这种问题是否可以恢复以及它的起源是什么,以避免将来再次出现。 - greydet

2

对我来说,以上所有答案都没有用。我只是重新克隆了我的git仓库,一切都很好。在克隆之前,我打开了所有被更改的文件,并在拉取后覆盖了它们。

那就是你应该经常提交代码:).


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接