糟糕的sha1文件处理

问题描述 投票:7回答:2

我在远程存储库上执行git fsck --full --no-dangling时遇到这些错误。 (GIT的服务器)

user@server:/var/git/REPOSITORY.git$ git fsck --full --no-dangling
bad sha1 file: ./objects/15/19d8eeacc8d0cd603bd87d2034508b1ffaffa8_28537991145d7e9d87b68335e9b82c2f788cb4fc
bad sha1 file: ./objects/32/4f425bcfe23d9f38b154427eeb9c800d109365_6df2d745fff22839759b25cc83f8d742c2e64086
bad sha1 file: ./objects/42/9225fd8d895084051189dc6478343d54fe41c8_28537991145d7e9d87b68335e9b82c2f788cb4fc
bad sha1 file: ./objects/46/798e4a01a5a7eaf2b203f6d1634d603497041b_6df2d745fff22839759b25cc83f8d742c2e64086
bad sha1 file: ./objects/bc/fb9d62ac05d5203249caa0e7e9cb5d1c32daba_6df2d745fff22839759b25cc83f8d742c2e64086
bad sha1 file: ./objects/cd/477947092b4f20feba8c37df974027b1864215_6df2d745fff22839759b25cc83f8d742c2e64086
Checking object directories: 100% (256/256), done.
Checking objects: 100% (136737/136737), done.
missing commit 590ebc3ac022491d7f11c483480fa9530adc91e8
missing tree bab1d768f0d4f6a02e0a30a6c446afaeabc4aa71

对于每个坏的sha1文件,有另一个文件以相同的名称开头,但没有下划线_,然后是其他一些文本。文件具有完全相同的文件大小但不同的日期或时间。

两个文件的示例:

./objects/15/19d8eeacc8d0cd603bd87d2034508b1ffaffa8_28537991145d7e9d87b68335e9b82c2f788cb4fc
./objects/15/19d8eeacc8d0cd603bd87d2034508b1ffaffa8

我正在附加6个中的两个案例的屏幕截图,因为它们都是相同的:

截图1:

屏幕截图2:我可以删除重复项,会发生什么?

*关于遗失的提交\树的任何想法?

git sha1 corruption
2个回答
2
投票

首先,因为问题是在服务器上,检查你是否没有任何不会显示相同问题的克隆:你可以从该克隆中制作一个本地裸仓库克隆,并用一份副本替换你的“user@server:/var/git/REPOSITORY.git”裸露的回购。

二,在服务器上: 只需在user@server:/var/git/REPOSITORY.git中复制user@server:/var/git/REPOSITORY2.git,删除那些'_'文件,看看错误是否仍然存在。 我的猜测是:丢失的提交和树仍将存在。 这意味着你需要在克隆中寻找那些以恢复它们,正如我在“How to diagnose and fix git fatal: unable to read tree”中所推荐的那样。 在“How to fix corrupted git repository?”上查看更多信息。


0
投票

对于我认为同样的问题,这是我的解决方法。反馈意见。

突出问题的命令:

git fsck --full --no-dangling
bad sha1 file: ./objects/e2/6eb31e9013bda60158eb9d63d4500e005b2911 (2016-04-18 09-12-50)

ls -alh objects/e2/6eb31e9013bda60168eb9d63d4600e006b2911*
-rwxrwxrwx 1 Unknown+User Unknown+Group 1.1K Sep  7 18:33  objects/e2/6eb31e9013bda60168eb9d63d4600e006b2911
-rwxrwxrwx 1 Unknown+User Unknown+Group 1.1K Sep  7 18:33 'objects/e2/6eb31e9013bda60168eb9d63d4600e006b2911 (2016-04-18 09-12-50)'

我的解决方法:

# Create New Repository
cd /tmp
git init --bare --shared repo_new

# Export commits from repo_old and import into the repo_new
#
# https://git-scm.com/docs/git-fast-export
# git fast-export --all | (cd /empty/repository && git fast-import)

cd repo_old
git fast-export --all | (cd /tmp/repo_new && git fast-import)

注意*:在此步骤之后,我只删除了旧的克隆实例并克隆了这个新的git存储库。

© www.soinside.com 2019 - 2024. All rights reserved.