糟糕的sha1文件处理

Mik*_*ike 7 git sha1 corruption

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
Run Code Online (Sandbox Code Playgroud)

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

两个文件的示例:

./objects/15/19d8eeacc8d0cd603bd87d2034508b1ffaffa8_28537991145d7e9d87b68335e9b82c2f788cb4fc
./objects/15/19d8eeacc8d0cd603bd87d2034508b1ffaffa8
Run Code Online (Sandbox Code Playgroud)

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

截图1: 文件1

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

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

Von*_*onC 3

首先,由于问题出在服务器上,请检查您是否没有任何不会显示相同问题的克隆您可以从该克隆中创建一个本地裸存储库克隆,并将您的“ user@server:/var/git/REPOSITORY.git”替换为所述裸的副本回购。

其次,在服务器上:
只需复制user@server:/var/git/REPOSITORY.gitin user@server:/var/git/REPOSITORY2.git,删除那些“ _”文件,然后查看错误是否仍然存在。
我的猜测是:丢失的提交和树仍然存在。
这意味着您需要在克隆中查找这些内容才能恢复它们,正如我在“如何诊断和修复 git fatal:无法读取树”中所建议的那样。
更多信息请参阅“如何修复损坏的 git 存储库? ”。