硬盘崩溃后恢复GIT存储库

时间:2014-04-06 12:41:42

标签: git version-control

Linux Magrathea 3.6.11+#474 PreprPT Thu Jun 13 17:14:42 BST 2013 armv6l GNU / Linux 在覆盆子上。作为GIT Server使用。存储库没有分支。 我是git的初学者,但我喜欢它!

我能够使用fsck恢复一些数据,并在Lost-Found中找到了git对象。在阅读了一些主题之后,我做了以下几点:

  • 创建一个新的空git存储库:git init
  • 将所有对象复制到新存储库.git/objects
  • 运行git fsck --full

没有错误。

但如果我尝试git log,我会

  

致命:错误的默认修订'HEAD'

下一步是什么?如何重新连接上一个状态?

如果我尝试使用:git clone git@magrathea:/gitroot/chorus克隆存储库。我回来说存储库是空的。

我很抱歉,但我是Git的简单用户。我对git的内部组织一无所知。

请善待并提供一些提示。

1 个答案:

答案 0 :(得分:2)

HEAD引用不存在的内容时,您会收到该消息。执行git init时,HEAD通常附加到master分支 - 您尚未对其进行任何修订。因此:“错误的默认修订版”在这里意味着“ no ”默认修订版。

所以看看你从中恢复对象的仓库中的.git/logs/refs/heads/master,你想要第二个字(awk {print $2;exit}文件)。在你正在建造的回购中,

  

git update-ref -m "reconstructing the repo" refs/heads/master that_sha

现在,我记得,git fsck追逐裁判,而你还没有,所以它保持沉默可能并不意味着什么。祝你好运。

(编辑:git branch master that_sha 也可能会有效...)