Git ошибка при нажатии: объект 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22: содержит записи, указывающие на null
Я не уверен, как я попал в этот беспорядок. Но я запускаю error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null
при попытке нажать мой репозиторий на GitHub. Полное нажатие:
[[email protected] puppet]$ git push
Counting objects: 27, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (16/16), 5.67 KiB, done.
Total 16 (delta 6), reused 14 (delta 4)
error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null sha1
fatal: Error in object
error: unpack failed: index-pack abnormal exit
To [email protected]:andyshinn/puppet.git
! [remote rejected] ganglia -> ganglia (unpacker error)
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '[email protected]:andyshinn/puppet.git'
Everything up-to-date
Git ls-tree показывает, что мой sudo-модуль является null sha1:
[[email protected] puppet]$ git ls-tree 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22
...
160000 commit 2cc9d02b3cf27d6a06d85612c03710aa0d90149c ssh
160000 commit 6961179007dce76d7fb9bd1fc361273acb4129a7 stdlib
160000 commit 0000000000000000000000000000000000000000 sudo
040000 tree 2bd16a8fab440081a876f64d720b5b4d9d119bc9 sysctl
040000 tree 01439b5a20363dccdf3f7103aab701fa7f4b3cd9 template
...
Перечисленные ssh
, stdlib
и sudo
являются подмодулями внешних репозиций git. Папки sysctl
и template
являются папками в репо.
Я попытался удалить модуль и повторно добавить его и теперь, похоже, не может нажимать фиксацию. Я проделал некоторые поиски и немного нашел ошибку. Как я могу решить эту ошибку?
Ответы
Ответ 1
Я смог наконец решить эту проблему. Вот что я сделал для ее решения:
В статье https://help.github.com/articles/remove-sensitive-data есть заголовок для Очистить файл от вашего репо. Я следую их примеру для удаления Rakefile, но вместо этого использовал папку проблем:
git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch modules/sudo' --prune-empty --tag-name-filter cat -- --all
Поскольку проблемное дерево было папкой, я добавил команду -r
в команду. Результатом стала очистка всех коммитов для модификаций sudo и, таким образом, объект 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22 исчез! После фиксации изменений нажатие было успешным. Я смог позже добавить сломанный модуль без проблем.
Ответ 2
Попробуйте клонировать github repo (голый) в другой локальный каталог.
Затем добавьте это как удаленный и попробуйте нажать на этот пульт.
Если это не удается, ваша проблема, вероятно, является локальной.
(Это было бы моим предположением)
Если это не так, я все равно попытаюсь клонировать ваше "рабочее репо" и попытаюсь отойти от этого клона до локального удаленного, добавленного ранее.
Если это не поможет, вы либо переименуете/создаете резервную копию своего репозитория github, либо создаете новый, либо должны связаться с поддержкой github.