我在远程存储库上执行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:我可以删除重复项,会发生什么?
*关于遗失的提交\树的任何想法?
首先,因为问题是在服务器上,检查你是否没有任何不会显示相同问题的克隆:你可以从该克隆中制作一个本地裸仓库克隆,并用一份副本替换你的“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?”上查看更多信息。
对于我认为同样的问题,这是我的解决方法。反馈意见。
突出问题的命令:
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存储库。