从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
的文件,其中包含一个悬空提交好的,您已经得到了对象,但是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,没有主文件,因为没有真正的提交。创建目录并创建文件我在我的帖子中添加了一些关于你建议的更多信息。您有任何输入吗?我添加了一种方法,您可以找到您的提交。。不是一个好的,但可能是一个