如何解决Git报告无效的sha1指针0000000000000000000000000000?

如何解决Git报告无效的sha1指针0000000000000000000000000000?,git,git-fsck,Git,Git Fsck,我的电脑突然关机,现在我所从事的项目的Git存储库存在缺陷。我已经安装了Git2.20.1。 我立即创建了项目文件夹的备份副本,以便与原始文件夹一起使用。我有一些我不想失去的本地分支机构 $git状态 错误:对象文件.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3为空 致命:松散对象c78e67bcad2ea132e3df8f80bb42b4804ab4f2a3(存储在.git/objects/c7/8e67bcad2ea132e3df

我的电脑突然关机,现在我所从事的项目的Git存储库存在缺陷。我已经安装了Git2.20.1。 我立即创建了项目文件夹的备份副本,以便与原始文件夹一起使用。我有一些我不想失去的本地分支机构

$git状态
错误:对象文件.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3为空
致命:松散对象c78e67bcad2ea132e3df8f80bb42b4804ab4f2a3(存储在.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3中)已损坏
短路输出:

$git fsck——命名对象
错误:对象文件.git/objects/04/f338bf0dc0770b841b291af6cdd4c9130edb84为空
错误:无法mmap.git/objects/04/f338bf0dc0770b841b291af6cdd4c9130edb84:没有这样的文件或目录
错误:04f338bf0dc0770b841b291af6cdd4c9130edb84:对象损坏或丢失:.git/objects/04/f338bf0dc0770b841b291af6cdd4c9130edb84
错误:对象文件.git/objects/2e/07479ec010e5b459387d841a576e1ead97f850为空
错误:无法mmap.git/objects/2e/07479ec010e5b459387d841a576e1ead97f850:没有此类文件或目录
错误:2E0479EC010E5B459387D841A576E1EAD97F850:对象损坏或丢失:.git/objects/2e/07479ec010e5b459387d841a576e1ead97f850
错误:对象文件.git/objects/34/B03409D09382C44F50409E438850CA9C82C77为空
错误:无法mmap.git/objects/34/B03409D09382C44F50409E438850CA9C82C77:没有这样的文件或目录
...
错误:对象文件.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3为空
错误:无法mmap.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3:没有这样的文件或目录
错误:c78e67bcad2ea132e3df8f80bb42b4804ab4f2a3:对象损坏或丢失:.git/objects/c7/8e67bcad2ea132e3df8f80bb42b4804ab4f2a3
错误:对象文件.git/objects/e5/19b2fbf083f68694af97ccddf46bc28c6ee8f7为空
错误:无法mmap.git/objects/e5/19b2fbf083f68694af97ccddf46bc28c6ee8f7:没有这样的文件或目录
错误:e519b2fbf083f68694af97ccddf46bc28c6ee8f7:对象损坏或丢失:.git/objects/e5/19b2fbf083f68694af97ccddf46bc28c6ee8f7
错误:对象文件.git/objects/ec/289B8E8D17C47644D5BDBFFC8B2957D2A430E为空
错误:无法mmap.git/objects/ec/289B8E8D17C47644D5BDBFFC8B2957D2A430E:没有这样的文件或目录
错误:EC289B8E8D17C47644D5BDBFFC8B2957D2A430E:对象已损坏或丢失:.git/objects/ec/289B8E8D17C47644D5BDBFFC8B2957D2A430E
错误:对象文件.git/objects/ed/33778ddc07a26a37c6f200f35ffee12e365ea4为空
错误:无法mmap.git/objects/ed/33778ddc07a26a37c6f200f35ffee12e365ea4:没有这样的文件或目录
错误:ed33778ddc07a26a37c6f200f35ffee12e365ea4:对象损坏或丢失:.git/objects/ed/33778DDC07A26A37C6F200F35FFEE2E365EA4
错误:对象文件.git/objects/f6/5686bed85025fd7adbf209ba93846b18800d70为空
错误:无法mmap.git/objects/f6/5686bed85025fd7adbf209ba93846b18800d70:没有这样的文件或目录
错误:f65686bed85025fd7adbf209ba93846b18800d70:对象损坏或丢失:.git/objects/f6/5686bed85025fd7adbf209ba93846b18800d70
错误:对象文件.git/objects/fd/cdc518b01c670cd38c15903fd3e84554114d38为空
错误:无法mmap.git/objects/fd/cdc518b01c670cd38c15903fd3e84554114d38:没有这样的文件或目录
错误:fdcdc518b01c670cd38c15903fd3e84554114d38:对象损坏或丢失:.git/objects/fd/cdc518b01c670cd38c15903fd3e84554114d38
检查对象目录:100%(256/256),完成。
检查对象:100%(40855/40855),完成。
错误:refs/remotes/origin/colors内务管理:无效的sha1指针0000000000000000000000
错误:对.git/logs/refs/remotes/origin/colors的错误引用
错误:对象文件.git/objects/ec/289B8E8D17C47644D5BDBFFC8B2957D2A430E为空
致命:松散对象EC289B8E8D17C47644D5BDBFC8B2957D2A430E(存储在.git/objects/ec/289B8E8D17C47644D5BDBFC8B2957D2A430E中)已损坏
colors housing
是一个分支,它已经合并到
master
,并且我已经编辑了其他文件,提交并合并了另一个分支

我可以采取哪些步骤修复损坏的对象

相关的

  • 错误:无法映射…
    是一个错误,
    无效的sha1指针000000…
    是另一个错误

    对于在座的只有sha1指针错误但没有mmap错误的任何人(如我):

    sha1指针错误可能意味着预期的指针文件不存在。
    refs/remotes/origin/colors内务管理
    可能包含以下内容:
    ref:refs/remotes/origin/notexistingbranch

    或:
    6ca0197d8f15f381d67e3502e678ca3d17dbbea2


    但是找不到此文件(
    ref
    )或提交id。在这两种情况下,您都可以通过在文件中写入任何已知的提交id或指向有效提交id的指针来修复错误。换句话说,重新分配分支提交的缓存值
    origin/colors内务处理
    。当您从
    origin
    git获取时,它将在
    refs/remotes/origin/colors-housing
    中再次写入
    origin/colors-housing
    的正确提交id。

    当我克隆了一个repo,并将其默认分支从
    master
    重命名为
    main

    错误是:

    错误:refs/remotes/origin/HEAD:无效的sha1指针0000000000000000000000

    让我们看看磁盘上的指针文件:

    $cat.git/refs/remotes/origin/HEAD
    参考:参考/遥控/原点/主
    

    在编辑该文件并将
    master
    替换为
    main
    之后,我再次能够毫无错误地获取/fsck/gc。

    当您使用
    git reflog时会发生什么?all
    ?@KarolDowbecki reflog按预期输出。我在那里看不到错误输出。修复损坏的存储库很困难。您最好的选择通常是使用同一回购协议的不同克隆