代码之家  ›  专栏  ›  技术社区  ›  Tryer

git日志和git reflog提供有效响应时出现git状态错误:错误树对象头

git
  •  0
  • Tryer  · 技术社区  · 3 年前

    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
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   torek    3 年前

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

    现在还不清楚你是怎么陷入这种境地的,但是 git log 它自己永远不会注意到,因为它获得了 犯罪 ac1d9fec39372683cd20fba15f9c5318b957cf25 它本身是完整的。只是这件事 丢失的树对象。只要软件从不试图检索丢失的对象,就没有人注意到它丢失了。坏的(因为缺少树,但本身并不坏)提交也指以前的提交 e6cdf4125529fcb8c0b0e131b12c4ab24012cdfd ,这一切都很好,之前的所有提交都很好。

    如果您可以找到或重新创建丢失的树对象,存储库将恢复可用性。或者,如果可以用引用现有或新树对象的好提交替换坏提交,那么整个存储库就可以了,尽管 快照 这是我的承诺 6e6758bea668ae2fb6271dec137927981548b581 他走了。