我们正在运行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存储库中没有分支,因此不在分支上。
答案 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
以覆盖错误的内容。