我遇到了硬盘故障导致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-1.7.4.1确定用户在对象数据库中被警告腐败的速度有多快,我拉了一个一位切换器:
$ git init repo
Initialized empty Git repository in /tmp/repo/.git/
$ cd repo
$ echo 'very important info' >critical
$ git add critical
$ git commit -m critical
[master (root-commit) c4d6d90] critical
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 critical
$ git ls-tree HEAD
100644 blob 82d423c32c4bb2c52938088e0234db041bf4eaaf critical
$ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf
very important info
$ echo 'Very important info' | git hash-object --stdin -w
81a3797afe76d339db25c0f9c705a6caa47279c2
$ mv .git/objects/81/a3797afe76d339db25c0f9c705a6caa47279c2 \
.git/objects/82/d423c32c4bb2c52938088e0234db041bf4eaaf
当然,git-fsck通知
$ git …
我最近开始使用SourceTree与Bitbucket合作.我正在研究一个项目,然后我决定将其移动到另一个文件夹(出于各种原因).所以,我剪切了我在repo中处理的文件,然后在SourceTree中单击了删除按钮,没有意识到这样做实际上会删除文件.为了以防万一我剪切文件,但不记得粘贴这些文件需要原始文件存在.
现在,我只有将文件从回购该SourceTree没有删除.这些都是在文件离开了objects目录,我没有info或者pack是内部的文件夹objects目录.
有什么办法可以恢复文件吗?我已经看过这个问题和这个问题,但是我是git的新手并且无法弄清楚如何实际做到这些.
请帮忙!如何恢复仓库中的文件?