我遇到了硬盘故障导致Git存储库的某些文件损坏.运行时,git fsck --full我得到以下输出:
error: .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack SHA1 checksum mismatch
error: index CRC mismatch for object 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid code lengths set)
error: cannot unpack 6c8cae4994b5ec7891ccb1527d30634997a978ee from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack at offset 97824129
error: inflate: data stream error (invalid stored block lengths)
error: failed to read object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa at offset 276988017 from .git/objects/pack/pack-6863e0a0e4b4ded6090fac5d12eba6ca7346b19c.pack
fatal: object 0dcf6723cc69cc7f91d4a7432d0f1a1f05e77eaa is corrupted
Run Code Online (Sandbox Code Playgroud)
我有存储库的备份,但包含包文件的唯一备份已经损坏了.所以我认为我必须找到一种方法从不同的备份中检索单个对象,并以某种方式指示Git生成一个只有正确对象的新包.
你能否告诉我如何修复我的存储库?
在我们托管的一些问题之后,我们决定将我们的Git存储库移动到GitHub.所以我克隆了存储库并尝试将其推送到GitHub.但是,我偶然发现了一些我们以前从未遇到过的错误:
C:\repositories\appName [master]> git push -u origin master
Counting objects: 54483, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (18430/18430), done.
error: object 9eac1e639bbf890f4d1d52e04c32d72d5c29082e:contains duplicate file entries
fatal: Error in object
fatal: sha1 file '<stdout>' write error: Invalid arguments
error: failed to push some refs to 'ssh://git@github.com/User/Project.git'
Run Code Online (Sandbox Code Playgroud)
当我跑fsck:
C:\repositories\appName [master]> git fsck --full
Checking object directories: 100% (256/256), done.
error in tree 0db4b3eb0e0b9e3ee41842229cdc058f01cd9c32: contains duplicate file entries
error in tree 9eac1e639bbf890f4d1d52e04c32d72d5c29082e: contains duplicate file entries …Run Code Online (Sandbox Code Playgroud) 我的房子刚刚停电了,现在我的git repo(当它发生时我正承诺)正在报告:
user@localhost$ git fsck
fatal: object 192e0282d23863ec80375a77011012ef8cb80f77 is corrupted
Run Code Online (Sandbox Code Playgroud)
我不能因为这个错误而提交.拉取和取出似乎仍然正常.
user@localhost$ git commit
error: unable to find 192e0282d23863ec80375a77011012ef8cb80f77
fatal: 192e0282d23863ec80375a77011012ef8cb80f77 is not a valid object
Run Code Online (Sandbox Code Playgroud)
我尝试重置它,但它没有做任何事情
git reset HEAD 192e0282d23863ec80375a77011012ef8cb80f77
git gc
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
更新:文件仍然很好所以我只是克隆了一个新的repo实例并手动移动文件(很高兴这不是唯一的repo实例!).但是,我保留了破损的回购,以便我可以尝试在此处发布的修补程序,以防下次有时间.
在我的笔记本电脑硬重置后,在git提交后冻结,当我在我的git存储库上输入任何命令时出现以下错误:
$ git status
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument
Run Code Online (Sandbox Code Playgroud)
反正有没有恢复我的git存储库?
我没有从以下两个问题中找到解决方案:
编辑:我没有找到导致我的git存储库损坏的原因以及任何恢复它的解决方案......我终于从我的SVN存储库开始了一个新的克隆!