Любой, кто знаком с отсутствующим объектом git error 00000000000000000000000000000000000000000000 для refs/heads/... "?

Мы запускаем git v1.7.1 и настроены gitweb. Мы также используем гитолит для администрирования, но я не думаю, что это связано с этой проблемой. Время от времени мы получаем ошибку в журнале Apache, например:

missing object 0000000000000000000000000000000000000000 for refs/heads/...

Если elipse на конце обычно является именем ветки. Я считаю, что строка нулей suppost является значением SHA1. Очевидно, что все нули не являются значением SHA1. Мне не ясно, где это значение исходит от?

Я запускал git fsck на сервере и не сообщал о проблеме, однако git gc решает проблему. Кроме того, мы можем потянуть и нажать на этот репозиторий (и эту ветку) в порядке. Выполняется только gitweb.

Я знаю, что другие видели эту проблему, потому что здесь есть закрытый вопрос: Ошибка Gitweb: фатальный: отсутствующий объект 00000000000000000000000000000000000000000000 для refs/heads/master На этот вопрос нет ответа.

Дополнительная информация

Теперь мы увидели это в нашем репозитории gitolite-admin. У нас нет веток в нашем хранилище gitolite-admin, поэтому это не было на ветке.

Ответ 1

Эта ошибка возникла для меня после того, как ветвь по умолчанию на удаленном компьютере была изменена, а прежняя ветка по умолчанию была удалена. Мой локальный репозиторий по-прежнему имел ссылку на удаленную ветку в

.git\рефов\перепятнышки\происхождение\ГОЛОВА

Я просто обновил это, чтобы ссылаться на новый пульт по умолчанию.

Ответ 2

Проверьте значение umask пользователя, выполняющего git -demon. Установка его на 022 может помочь вам (посмотрите на "man umask" ).

Ответ 3

Это значение по умолчанию для ветки без коммитов. Когда вы нажимаете новую ветку, вы увидите на выходе 00000- > ef357 или что-то в этом роде.

Это также может быть вызвано материалами, чувствительными к регистру.

Ответ 4

Это происходит для меня всякий раз, когда репо обновляется, а разрешения для Apache неправильно установлены.

Я установил крюк script для запуска после каждой фиксации для исправления разрешений (инструкции здесь http://sitaramc.github.com/gitolite/hooks.html). Я добавил Apache в группу git, и, следовательно, все файлы должны быть прочитаны с помощью gitweb cgi, запускаемого Apache. Я рассматриваю возможность использования suexec для исправления этого.

Ответ 5

Я также нашел подобную проблему локально для одного из моих проектов. Для меня поведение выглядит следующим образом:

  • на 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.