我今天试图打开我的存储库,但它没有提交任何提交历史记录.我试过的一切(git status,git log,git checkout ......)都引发了一个关于腐败对象的错误.
我在网上研究了这个问题并找到了Linus Torvalds 的文章,但在他发现链接ID损坏的地方迷路了:我的文件ID,树或blob都没有与错误消息引发的罪魁祸首相匹配.
然后我回到文章关于恢复"硬盘故障损坏的git对象"和(在将罪魁祸首对象移开之后)继续工作直到
$ cat packed-refs
Run Code Online (Sandbox Code Playgroud)
那时我的电脑说:cat: packed-refs: No such file or directory
我跳过那一步并做了
$ git fsck --full
Run Code Online (Sandbox Code Playgroud)
并获得了适当的输出,但后来我应该将罪魁祸首(或我所指的罪魁祸首,错误引发的sha1 ID)从备份存储库复制回主存储库,然后复制丢失的对象据我所知,备份存储库进入主存储库; 而且我不想做任何太激烈的事情,或者我可能会强迫我以后不能强制执行的任何事情.
所以我的问题是(是),我本来应该备份(哦,新手警报),还是我解压缩.pack文件时发生的事情?并且是"罪魁祸首"我实际上是复制一个干净的文件,即没有损坏?
(我认为只是告诉你我最初被"git"和"fsck"之间的Torvalds文件中的简单冲突所困惑.所以我真的很新.)
$ git status
fatal: object 016660b7605cfc2da85f631bbe809f7cb7962608 is corrupted
Run Code Online (Sandbox Code Playgroud)
$ git status
fatal: bad object HEAD
$ git fsck --full
error: HEAD: invalid sha1 pointer 016660b7605cfc2da85f631bbe809f7cb7962608
error: refs/heads/RPG does not point to a valid object!
dangling tree 2c1033501b82e301d47dbf53ba0a199003af25a8 …Run Code Online (Sandbox Code Playgroud)