【发布时间】:2021-03-17 14:05:30
【问题描述】:
我在 git rebase 的中间,得到一个关于 git 是 unable to read cc95d5463f90fd78c4382948418b6ae5ddfb0a2a 的错误
我进行了调查,发现该 blob 在四个提交中被引用。我解压缩了其中一个提交并 grep 了 blob,输出将我指向我的 repo 中的文件。我已将输出文件名替换为brokenfile,而dc77f57d 是引用该blob 的提交:
$ git ls-tree -r dc77f57d | grep cc95d5463f90fd78c4382948418b6ae5ddfb0a2a
100644 blob cc95d5463f90fd78c4382948418b6ae5ddfb0a2a brokenfile
git fsck 还报告:
broken link from tree 4e6de279c5d48acc16457bf35cea9702c892ddd1
to blob cc95d5463f90fd78c4382948418b6ae5ddfb0a2a
...
missing blob cc95d5463f90fd78c4382948418b6ae5ddfb0a2a
然后我打算为文件重新创建 blob,但文件的哈希不再匹配 blob:
$ git hash-object brokenfile
695d542ba36a58012c928e999b3b5f36bbb8013d
有没有办法从这种状态中恢复?该 blob 在 .git/objects/ 中根本不存在,这让我相信它在 rebase 期间以某种方式被删除了。
谢谢。
【问题讨论】: