任何熟悉git错误的人“丢失对象0000000000000000000000000000000000000000 for refs / heads / ...”?

时间:2011-05-25 21:47:59

标签: git gitweb

我们正在运行git v1.7.1并配置了gitweb。我们也使用gitolite进行管理,但我不认为这与这个问题密切相关。我们不时会在Apache日志中收到错误,如:

missing object 0000000000000000000000000000000000000000 for refs/heads/...

最后的elipse通常是分支名称。我相信零的字符串是一个SHA1值。显然,所有零都不是SHA1值。我不清楚这个值来自何处?

我在服务器上运行了git fsck并且没有报告问题,但是git gc解决了这个问题。此外,我们能够拉动并推送到此存储库(和该分支)。只有gitweb似乎有效。

我知道其他人已经看到了这个问题,因为这里有一个封闭的问题: Gitweb failure: fatal: missing object 0000000000000000000000000000000000000000 for refs/heads/master 这个问题没有答案。

其他信息

我们现在已经在我们的gitolite-admin存储库中看到了这个问题。我们的gitolite-admin存储库中没有分支,因此不在分支上。

6 个答案:

答案 0 :(得分:4)

更改了遥控器上的默认分支并删除了以前的默认分支后,我发生了此错误。我的本地存储库仍然在

中引用了已删除的分支
  

的.git \参\遥控\原点\ HEAD

我只是将其更新为引用新的默认遥控器。

答案 1 :(得分:2)

检查运行git-daemon的用户的umask值。将其设置为022可能会对您有所帮助(请查看' man umask')。

答案 2 :(得分:1)

这是没有提交的分支的默认值。推送新分支时,您将在输出00000-> ef357或类似内容中看到。

也可能是由区分大小写的内容造成的。

答案 3 :(得分:1)

只要repo更新并且Apache的权限设置不正确,就会发生这种情况。

我设置了一个脚本钩子,在每次提交后运行以修复权限(这里的说明http://sitaramc.github.com/gitolite/hooks.html)。我已经将Apache添加到git组,因此所有文件必须由Apache运行的gitweb cgi读取。我正在考虑使用suexec来解决这个问题。

答案 4 :(得分:0)

我在我的一个项目中也发现了一个类似的问题。对我而言,行为如下:

  • git fetch上我得到error: refs/heads/test_theme does not point to a valid object!
  • git branch上我得到fatal: missing object 97fe4dfaa2bfb3768f42bb5caca1c7cd37a26734 for refs/heads/test_theme

我真的不能说我记得我对该分支所做的工作以及何时进行的工作。抱歉。

但是,当我执行rm -rf /path/to/project/.git/refs/heads/test_theme时,错误就会消失。

答案 5 :(得分:0)

我的解决方案是放弃一些历史记录。 将git clone移到其他地方。复制.git/refs以覆盖错误的内容。