git 状态错误,而 git 日志和 git reflog 提供有效响应:错误的树对象 HEAD
git status error while git log and git reflog provide valid responses: bad tree object HEAD
git log
工作正常并提供:
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
工作正常并提供:
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
说:
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)
如果 fa
当前正在同步或类似情况。因此,我导航到 .git/objects/
文件夹并将 fa (2)
重命名回 fa
。如果同时存在 fa
和 fa (2)
文件夹,我导航到每个文件夹并删除内容较旧的文件夹。然后,剩下的文件夹,我把它重命名回fa
。对 .git/objects/
中具有重复条目的所有文件夹执行此操作后,运行 git fsck
returns:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (2338/2338), done.
没有错误似乎表明一切正常。 git status
不再 returns 任何错误。这可能适用于您的情况,也可能无效。请参阅 torek 的评论
这是树对象错误的结果,即 6e6758bea668ae2fb6271dec137927981548b581
。对象本身要么根本不存在,要么在内部无效; git fsck
输出暗示前者。
不清楚您是如何陷入这种情况的,但是 git log
本身从来没有注意到,因为它获得了 commit ac1d9fec39372683cd20fba15f9c5318b957cf25
本身是完整的。只是这个提交 引用了 丢失的树对象。只要软件从不尝试找回丢失的对象,就没有人会注意到它丢失了。坏的(because-of-missing-tree,但本身还不错)提交也指以前的提交 e6cdf4125529fcb8c0b0e131b12c4ab24012cdfd
,这一直很好,所有以前的提交都很好。
如果您可以找到或 re-create 丢失的树对象,存储库将恢复可用。或者,如果您可以用引用现有或新树对象的好提交替换坏提交,则整个存储库都可以,尽管存储的 snapshot 与提交一起使用6e6758bea668ae2fb6271dec137927981548b581
不见了。
git log
工作正常并提供:
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
工作正常并提供:
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
说:
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)
如果 fa
当前正在同步或类似情况。因此,我导航到 .git/objects/
文件夹并将 fa (2)
重命名回 fa
。如果同时存在 fa
和 fa (2)
文件夹,我导航到每个文件夹并删除内容较旧的文件夹。然后,剩下的文件夹,我把它重命名回fa
。对 .git/objects/
中具有重复条目的所有文件夹执行此操作后,运行 git fsck
returns:
Checking object directories: 100% (256/256), done.
Checking objects: 100% (2338/2338), done.
没有错误似乎表明一切正常。 git status
不再 returns 任何错误。这可能适用于您的情况,也可能无效。请参阅 torek 的评论
这是树对象错误的结果,即 6e6758bea668ae2fb6271dec137927981548b581
。对象本身要么根本不存在,要么在内部无效; git fsck
输出暗示前者。
不清楚您是如何陷入这种情况的,但是 git log
本身从来没有注意到,因为它获得了 commit ac1d9fec39372683cd20fba15f9c5318b957cf25
本身是完整的。只是这个提交 引用了 丢失的树对象。只要软件从不尝试找回丢失的对象,就没有人会注意到它丢失了。坏的(because-of-missing-tree,但本身还不错)提交也指以前的提交 e6cdf4125529fcb8c0b0e131b12c4ab24012cdfd
,这一直很好,所有以前的提交都很好。
如果您可以找到或 re-create 丢失的树对象,存储库将恢复可用。或者,如果您可以用引用现有或新树对象的好提交替换坏提交,则整个存储库都可以,尽管存储的 snapshot 与提交一起使用6e6758bea668ae2fb6271dec137927981548b581
不见了。