如何修复错误的git树对象

k5ifujac  于 2022-11-20  发布在  Git
关注(0)|答案(5)|浏览(240)

我有一个存储库的本地副本,它不再有任何远程关联到它。我试图将此存储库推到一个新的远程,但每次我得到这样的消息:

error: Could not read 9eefe9305253b2c039a54cbc8aa22f7f8e6e8790
fatal: bad tree object 9eefe9305253b2c039a54cbc8aa22f7f8e6e8790

我在这里读到过类似的问题,其中一种解决方法是从存储库的其他副本中检索该对象,或者进行硬重置。我不能同时进行这两种操作,因为我没有该存储库的其他副本。
有没有一种方法可以简单地删除这个提交,或者其他某种解决方案可以让我把repo推到新的远程保存历史中?

xtupzzrd

xtupzzrd1#

只需退出访问git的应用程序并重新启动即可。

osh3o9ms

osh3o9ms2#

要真正解决这个问题并且不丢失任何数据(假设该树是唯一丢失的对象,我对此表示怀疑),您可以尝试以下操作:
1.使用相关树检出提交的父提交
1.用有问题的提交的名字试试git cat-file -p,看看提交消息说了什么(希望它能告诉你改变了什么)
1.现在,您可能能够确定所做的更改,并有希望从中推断出目录结构。
1.如果3起作用,那么你可以用文本编辑器和zlib压缩器手动创建树。2 tee文件中的条目将是其他树对象或blob。3希望大部分的文件和文件夹在两次提交之间是共享的(没有改变)。4这将允许你重用 checkout 提交的树对象中的大部分条目。

piok6c0g

piok6c0g3#

我遇到了这个问题。重新启动我的电脑实际上修复了它,所以请在做其他事情之前先试一试。或者也许我只是运气好,但值得一试!

368yc8dk

368yc8dk4#

我的git存储库在我的计算机上的OneDrive文件夹中。如果您在另一台计算机上使用OneDrive,请从该计算机上的存储库推送,然后再次从您自己的计算机上拉/推送。

vddsk6oq

vddsk6oq5#

我遇到了这个,我真的不想删除我的X11M0N11X重新开始。我在网上找到的其他建议都没有帮助我(包括一些相当复杂的X11M1N11X手术尝试)。
解决这个问题的方法是跑步:

git fetch --refetch
git gc --aggressive

您可以使用以下命令确认修复:

git fsck

相关问题