首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git状态错误,而git日志和git重发提供了有效的响应:糟糕的树对象头。

git状态错误,而git日志和git重发提供了有效的响应:糟糕的树对象头。
EN

Stack Overflow用户
提问于 2022-04-10 03:34:58
回答 1查看 186关注 0票数 0

git log工作良好,并提供:

代码语言:javascript
运行
复制
commit ac1d9fec39372683cd20fba15f9c5318b957cf25 (HEAD -> master)
Author: TryerGit <Email@Email.com>
Date:   Tue Apr 5 20:17:36 2022

    Writeup per suggestion

commit e6cdf4125529fcb8c0b0e131b12c4ab24012cdfd (origin/master)
Author: TryerGit <Email@Email.com>
Date:   Mon Apr 4 11:54:53 2022

    B4 trying folder specific .gitignore files

commit 54a753a762a7cdfbdea9a0d50deef3b886712cc3
Author: TryerGit <Email@Email.com>
Date:   Sat Mar 26 17:32:24 2022

    Functionally OKAYish version

... and so on

git reflog工作良好,并提供:

代码语言:javascript
运行
复制
ac1d9fe (HEAD -> master) HEAD@{0}: commit: Writeup per suggestion
e6cdf41 (origin/master) HEAD@{1}: commit: B4 trying folder specific .gitignore files
54a753a HEAD@{2}: commit: Functionally OKAYish version
... and so on

但是,git status给出了错误:

error: bad tree object HEAD

如何修复此错误?

埃塔:git fsck说:

代码语言:javascript
运行
复制
Checking object directories: 100% (256/256), done.
Checking objects: 100% (2338/2338), done.
error: 6e6758bea668ae2fb6271dec137927981548b581: invalid sha1 pointer in cache-tree
broken link from  commit ac1d9fec39372683cd20fba15f9c5318b957cf25
              to    tree 6e6758bea668ae2fb6271dec137927981548b581
missing tree 6e6758bea668ae2fb6271dec137927981548b581
dangling tree 3771f5b131b8934d28373230375c76658c93c0c8

ETA2:一种基于云的同步机制在.git/objects/中创建文件夹,以防发生冲突,例如,如果fa (2)当前正在同步或类似于这些内容。因此,我导航到.git/objects/文件夹并将fa (2)重命名为fa。如果同时存在fafa (2)文件夹,我导航到每个文件夹并删除内容较旧的文件夹。然后,剩下的文件夹,我把它重命名为fa。对.git/objects/中具有重复条目的所有文件夹执行此操作后,运行git fsck返回:

代码语言:javascript
运行
复制
Checking object directories: 100% (256/256), done.
Checking objects: 100% (2338/2338), done.

没有任何错误似乎表明一切都很好。git status不再返回任何错误。这在您的情况下可能有效,也可能不起作用。请参阅torek的评论here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-10 03:49:33

这是由于有一个糟糕的树对象,即6e6758bea668ae2fb6271dec137927981548b581。对象本身要么根本不存在,要么在内部无效;git fsck输出意味着前者。

目前还不清楚您是如何进入这种情况的,但是git log本身从来没有注意到,因为它获得的提交ac1d9fec39372683cd20fba15f9c5318b957cf25本身是完整的。只是这个提交引用了缺少的树对象。只要软件从未试图检索丢失的对象,就没有人注意到它丢失了。不好的提交(因为缺少树,但本身并不坏)也指以前的提交e6cdf4125529fcb8c0b0e131b12c4ab24012cdfd,它一直都是好的,而且以前的所有提交都很好。

如果您能够找到或重新创建缺少的树对象,存储库将恢复为可用性。或者,如果您可以将坏提交替换为引用现有或新树对象的好提交,则存储库作为一个整体将是正常的,尽管随提交6e6758bea668ae2fb6271dec137927981548b581一起存储的快照已经消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71813583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档