从objects目录恢复git存储库

从objects目录恢复git存储库,git,Git,我不知道这是怎么发生的,但我丢失了数据,只剩下一个.git目录,其中只包含一个objects目录 我遵循了以下步骤: 创建了一个新目录并运行了git init 将我拥有的objects目录复制到新的.git/objects目录 运行git fsck命令 上述步骤的输出产生以下消息: notice: HEAD points to an unborn branch (master) notice: No default references dangling commit 0b2c7d52b6a7e

我不知道这是怎么发生的,但我丢失了数据,只剩下一个
.git
目录,其中只包含一个
objects
目录

我遵循了以下步骤:

  • 创建了一个新目录并运行了
    git init
  • 将我拥有的
    objects
    目录复制到新的
    .git/objects
    目录
  • 运行
    git fsck
    命令
  • 上述步骤的输出产生以下消息:

    notice: HEAD points to an unborn branch (master)
    notice: No default references
    dangling commit 0b2c7d52b6a7e6d4e2858e9ebf207c315407c87c
    dangling commit 8dceafea1634c923069f6d4b925839c28d92c4e5
    dangling commit dd7bdd04c557a018c15fd0948075121f181decd1
    
    当我在这个阶段尝试运行
    git log
    时,我得到了
    fatal:bad default revision'HEAD'

    我应该做什么来恢复我的数据


    编辑:

    克劳斯托弗的建议:

  • 我在
    /refs/heads
    下添加了一个名为
    master
    的文件,其中包含一个悬空提交
  • 我得到的消息是致命的:无法读取树3c864da48b16ad0dc5f8ae585380270a708a1e56
  • 我检查过了,在“对象”下没有3c目录

  • 好的,您已经得到了对象,但是git不知道应该将哪个提交解释为主提交。
    git fsck
    的输出中有三个建议。您可以尝试以下方法:

    • 创建
      .git/refs/heads
      目录并创建名为
      master
    • 将其中一个提交的SHA1哈希放在此文件中
    • 运行git签出主机
    如果这不是您要查找的提交,请在
    主文件中放入另一个sha1哈希

    --


    编辑:如果这些不是您在评论中描述的真实提交,那么您可能应该检查您的对象。使用git show 2452845a7b526db3dfbf88c1c2ca05967ef9653a
    可以查看文件的内容。如果是提交,它将以单词
    commit
    开头,还包含日期、提交消息等。您可以编写一个小shell脚本来遍历所有对象。找到提交后,将其sha1放在refs/heads/master文件中,并执行上面所述的操作。好吧,您得到了对象,但git不知道应该将哪个提交解释为master。
    git fsck
    的输出中有三个建议。您可以尝试以下方法:

    • 创建
      .git/refs/heads
      目录并创建名为
      master
    • 将其中一个提交的SHA1哈希放在此文件中
    • 运行git签出主机
    如果这不是您要查找的提交,请在
    主文件中放入另一个sha1哈希

    --


    编辑:如果这些不是您在评论中描述的真实提交,那么您可能应该检查您的对象。使用git show 2452845a7b526db3dfbf88c1c2ca05967ef9653a
    可以查看文件的内容。如果是提交,它将以单词
    commit
    开头,还包含日期、提交消息等。您可以编写一个小shell脚本来遍历所有对象。找到提交后,将其sha1放在refs/heads/master文件中,然后执行上面所述的操作

    我正在尝试执行此操作,但现在出现了一些完全奇怪的情况。。我创建了一个完整的新目录并运行“git init”。然后,当我运行“git log”时,我得到错误“致命:错误的默认版本‘HEAD’”。。。这是一个完全不同的目录,现在当我转到新目录和/refs/heads/由于某种原因没有主文件时,git似乎被破坏了:/Yeah,没有主文件,因为没有真正的提交。创建目录并创建文件我在我的帖子中添加了一些关于你建议的更多信息。您有任何输入吗?我添加了一种方法,您可以找到您的提交。。这不是一个好的,但可能是一个我正试图这样做,但现在有一些完全奇怪的。。我创建了一个完整的新目录并运行“git init”。然后,当我运行“git log”时,我得到错误“致命:错误的默认版本‘HEAD’”。。。这是一个完全不同的目录,现在当我转到新目录和/refs/heads/由于某种原因没有主文件时,git似乎被破坏了:/Yeah,没有主文件,因为没有真正的提交。创建目录并创建文件我在我的帖子中添加了一些关于你建议的更多信息。您有任何输入吗?我添加了一种方法,您可以找到您的提交。。不是一个好的,但可能是一个