我正在运行Git 1.6.4.2。垃圾收集失败,显示“error: unable to find <SHA1>
”。
我已经确定丢失的对象是一个blob文件,没有办法找回。看起来两个同时运行“git add”和“git commit”的脚本相互干扰,其中一个提交了一个比另一个更新的文件版本,并且旧版本的blob消失了。
因此,我尝试回滚我的存储库,以删除引用缺失blob的树的提交。
我知道提交所在的分支,因此对其运行了“git reset”以倒回到有问题的提交的父节点。我也知道该分支已合并到其他地方,因此我也倒回了该分支。所以据我所知,错误的提交/树/ blob没有被任何内容引用。但如果我运行git prune --expire=now
,然后运行git gc
,我仍会收到有关缺失对象的错误。
我如何查询Git数据库以查找包含错误blob id的每个树对象?然后如何找出是什么导致Git保留它?
git fsck
吗? http://book.git-scm.com/4_maintaining_git.html - Marcin Gilgit fsck
说了什么吗? - CB Bailey