我有一台Windows电脑,它突然决定删除了大部分Git仓库(可能触发了重要工作检测器)。我现在只剩下对象文件。我不确定这些对象文件的完整性。是否可以仅从对象文件中恢复数据?据我所知,对象树是完整的。所有的包和散装对象都在原处;我只是没有元数据来证明Git。
我有一台Windows电脑,它突然决定删除了大部分Git仓库(可能触发了重要工作检测器)。我现在只剩下对象文件。我不确定这些对象文件的完整性。是否可以仅从对象文件中恢复数据?据我所知,对象树是完整的。所有的包和散装对象都在原处;我只是没有元数据来证明Git。
git init
初始化一个新的代码库。然后我会将死亡代码库中的objects目录复制到新的代码库中。接着在新的代码库中运行git fsck
。
如果你幸运的话,你会看到很多悬挂的对象,再加上一点运气,其中一些悬挂的对象将是丢失分支的末端提交对象。
如果你在这些提交对象上运行git show
和/或git log
,你可能会认出一些分支。
要“恢复”它们,你可以使用git branch
重新创建命名分支。
git checkout <last-commit-hash>
一样简单,然后创建一个master
分支。现在,我需要找到00/e
应该是什么。 - Jashank Jeremybash -c' i = 1; while n = $(printf%040x $ i)&& git cat-file-s“$ n”>/ dev / null 2>&1; do let i ++; done; p = $(printf .git / objects /%.2s /%s“$ n”“$ {n#??}”); echo“在$p处使用临时对象名称$n”; set-x; cp-p“$ 1”“$ p” && t = $(git cat-file-t“$ n”)&& git cat-file“$ t”“$ n”| git hash-object --stdin -t“$ t”-w && rm-f“$ p”'- .git / objects / 00 / e
- Chris Johnsengit checkout master
,我建议先从这里开始。
git show -s
显示什么? - The Lazy Coder