【问题标题】:Anyone familiar with the git error "missing object 0000000000000000000000000000000000000000 for refs/heads/..."?任何熟悉 git 错误“缺少对象 000000000000000000000000000000 用于 refs/heads/...”的人吗?
【发布时间】:2011-05-25 21:47:58
【问题描述】:

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

missing object 0000000000000000000000000000000000000000 for refs/heads/...

末尾的省略号通常是分支名称。我相信零字符串应该是 SHA1 值。显然,全零不是 SHA1 值。我不清楚这个值是从哪里来的?

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

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

其他信息

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

【问题讨论】:

  • 也许当你不在任何分支时会发生这种情况?
  • 根据谷歌这似乎是由“坏远程头”引起的,只需谷歌“缺少对象0000 ...”字符串。 "git fsck --verbose" 显示错误条目
  • 您使用什么操作系统来运行 Apache/gitweb/Git?我可以通过不断更新 shell 中的 ref 在 Mac OS X 下(其中 [ rename(2) 不是原子的](weirdnet.nl/apple/rename.html))重新创建错误消息(它来自 git for-each-ref)在另一个 shell 循环中运行 git for-each-ref 时循环(Git 使用 rename(2) 更新松散的 ref 文件,最终 git for-each-ref 由于非原子性而尝试读取一个不存在的文件) .如果这是您的问题,那么错误可能只会影响 gitweb 显示的显示,并且您无能为力。
  • +1 我在 Ubuntu 11 服务器上遇到了同样的问题。 Git gc 修复了它。感谢您的帖子。

标签: git gitweb


【解决方案1】:

在远程默认分支被更改并且以前的默认分支被删除后,我发生了这个错误。我的本地存储库仍然有对已删除分支的引用

.git\refs\remotes\origin\HEAD

我只是更新了它以引用新的默认遥控器。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我的一个项目在本地也发现了类似的问题。对我来说,行为如下:

      • 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 时,错误消失了。

      【讨论】:

      • rm -rf /{{your project path}}/.git/refs/heads/test_theme 这个命令解决了第二点,但第一点问题仍然存在跨度>
      【解决方案4】:

      这是没有提交的分支的默认设置。当你推送一个新分支时,你会在输出中看到 00000->ef357 或类似的东西。

      它也可能是由区分大小写的东西引起的。

      【讨论】:

      • 我正在检查已删除的远程分支。请您对“区分大小写的内容”再清楚一点吗?
      • 您可以指定 somebranch 或 SOMEBRANCH 并且某些环境会同时接受这两者。但 git 的核心是区分大小写的。这可能会带来问题。
      【解决方案5】:

      每当更新存储库并且为 Apache 设置错误的权限时,我都会发生这种情况。

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

      【讨论】:

        【解决方案6】:

        我的解决方案是丢弃一些历史记录。 在其他地方做git clone。复制.git/refs 覆盖坏的。

        【讨论】:

          猜你喜欢
          • 2019-10-26
          • 1970-01-01
          • 2022-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-07
          • 1970-01-01
          相关资源
          最近更新 更多