【发布时间】:2012-04-03 15:24:13
【问题描述】:
我有一个简单的备份系统,其中使用--bare(可能是--mirror)创建的git 克隆每小时运行git fetch。这个想法是,如果我的工作副本发生问题,我会在克隆中备份我的工作。
这个系统很好用,但是当我运行 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 <russell.silva@blahblah.com>
Date: Wed Feb 29 10:19:26 2012
WIP on experimental: 808f6e4 blah blah blah
看起来抓取大部分是成功的; git log <branch> 显示最新的分支。但是错误很烦人。我该如何摆脱它们?如何防止它们再次发生?
请注意,这个问题与 this one 不同,在 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)
【问题讨论】:
-
当有存储时它是否总是失败?也许
git fetch的详细输出会有所帮助,因为它很奇怪 -
@CharlesB:我不确定它是否总是因藏匿而失败;我必须做一些更广泛的测试。提供的
git fetch输出是命令的总输出。 -
您可以使用
git fetch --verbose获得更详细的输出 -
另外,协议是什么?它是“原始文件”,还是 git://,还是 http://?
-
某些东西必须以某种方式引用存储。您是否尝试过在 git 文件或至少在 .git/refs 中对存储的 SHA1 进行暴力搜索?也许这揭示了缺失的链接。