git fetch“无法找到”“object ... not found”存储错误

问题描述:

我有一个简单的备份系统,其中使用--bare(它可能是--mirror)每小时运行git fetch创建的git克隆。这个想法是,如果我的工作副本发生某些事情,那么我可以在克隆中备份我的工作。git fetch“无法找到”“object ... not found”存储错误

该系统的伟大工程,但是当我运行git fetch我得到一个错误:

$ git fetch 
remote: Total 0 (delta 0), reused 0 (delta 0) 
error: unable to find 2a8c978c41c362c3f0c42775c9124780a0e71e08 
fatal: object 2a8c978c41c362c3f0c42775c9124780a0e71e08 not found 

当我看到在该对象的原始资料库,这是一个藏匿处:

$ git show 2a8c978c41 
commit 2a8c978c41c362c3f0c42775c9124780a0e71e08 
Merge: 808f6e4 ddc28da 
Author: Russell Silva <[email protected]> 
Date: Wed Feb 29 10:19:26 2012 
    WIP on experimental: 808f6e4 blah blah blah 

它看起来像获取大部分是成功的; git log <branch>显示最新的分支机构。但错误是讨厌的。我如何摆脱它们?我如何防止它们再次发生?

请注意,这个问题不同于this one,某人实际上想要取回藏匿物。我不在乎是否我的git fetch命令获取包装;如果他们不这样,那很好。

编辑:请求的git fetch --verbose全力输出:

$ git fetch --verbose 
remote: Total 0 (delta 0), reused 0 (delta 0) 
From /home/russell/work/russells-project 
= [up to date]  some-branch -> some-branch 
error: unable to find 2a8c978c41c362c3f0c42775c9124780a0e71e08 
fatal: object 2a8c978c41c362c3f0c42775c9124780a0e71e08 not found 

我已经在输出改变名称来掩盖私人信息,并消除所有,但的“[最新]”行一个 - 有数十个,一个用于存储库中的每个分支。

此外,我的远程是在本地文件系统;它不通过网络访问。

$ git remote --verbose 
origin /home/russell/work/russells-project (fetch) 
origin /home/russell/work/russells-project (push) 
+0

它总是* *失败时,有一个藏匿?也许'git fetch'的详细输出会有所帮助,这很奇怪 – CharlesB 2012-04-03 15:29:16

+0

@CharlesB:我不确定它是否总是失败,我不得不做更广泛的测试。提供的'git fetch'输出是命令的总输出。 – 2012-04-03 16:49:24

+0

你可以有'git fetch --verbose'更详细的输出 – CharlesB 2012-04-04 09:04:06

尝试使用一些 'cache_fu' http://github.com/defunkt/cache_fu.git