我的本地计算机上的git存储库出现了大问题。
我修改了一个文件,运行git status
,文件显示为已修改。我使用git add .
添加了文件,它照常工作。但是当我即将提交更改时,我收到以下错误:
error: garbage at end of loose object 'e91ce852822d32e380ed7ddd04c93066e3c600ea'
fatal: object e91ce852822d32e380ed7ddd04c93066e3c600ea is corrupted
通过运行git cat-file -t e91ce852822d32e380ed7ddd04c93066e3c600ea
,我可以看到该对象是一棵树。
我已经看到了几个关于如何修复损坏的blob或提交的解决方案,但这是一棵树,我找不到可能出错的答案,或者如何修复它。
任何帮助表示赞赏:)
答案 0 :(得分:3)
如果你的git repo与外部资源(Github)同步,而如果任何解决方案不起作用,你可以重新启动你的repo
我做了什么:
# copy the corrupted .git dir
mv -f .git .gitback
git init
# keep your config file
cp .gitback/config .git/config
# load objects
git pull
有效。显然,这不是一个很好的解决方案,但它可以帮助
答案 1 :(得分:2)
可能出错的地方很难说,取决于你的Git版本和环境
例如,在过去,zlib issue with git1.5.1因legacyheaders = false
设置而触发了此类消息。
至于从loose objects恢复树,这个SO答案“How to recover Git objects damaged by hard disk failure?”说明了一种方法,之后git fsck --full
(如Mark Rushakoff提及评论)已经完成。
git cat-file -t 6c8cae4994b5ec7891ccb1527d30634997a978ee
并检查对象的类型。
如果类型是树:您可以使用'git ls-tree'从以前的备份中恢复树;然后'
git mktree
'将它再次写入您当前的存储库。
但是,假设在较旧的包或存储库备份中找到这些对象。
答案 2 :(得分:-2)
早上好,就我而言,我刚刚删除了git目录,并重新启动了git。