14

我不知道我是怎么把自己弄到这个烂摊子里的。但是我error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null在尝试将我的存储库推送到 GitHub 时遇到了问题。全力推动:

[ashinn@puppet1 puppet]$ git push
计数对象:27,完成。
Delta 压缩最多使用 2 个线程。
压缩对象:100% (11/11),完成。
写入对象:100% (16/16),5.67 KiB,完成。
总共 16 个(增量 6),重复使用 14 个(增量 4)
错误:对象 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:包含指向 null sha1 的条目
致命:对象错误
error: unpack failed: index-pack 异常退出
到 git@github.com:andyshinn/puppet.git
 ![远程拒绝] ganglia -> ganglia(解包器错误)
 ![远程拒绝] master -> master(解包器错误)
错误:未能将一些参考推送到 'git@github.com:andyshinn/puppet.git'
一切都是最新的

Git ls-tree 显示我的 sudo 模块是一个空 sha1:

[ashinn@puppet1 puppet]$ git ls-tree 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22
...
160000 提交 2cc9d02b3cf27d6a06d85612c03710aa0d90149c ssh
160000 提交 6961179007dce76d7fb9bd1fc361273acb4129a7 标准库
160000 提交 00000000000000000000000000000000000000000 sudo
040000 树 2bd16a8fab440081a876f64d720b5b4d9d119bc9 sysctl
040000 树 01439b5a20363dccdf3f7103aab701fa7f4b3cd9 模板
...

列出sshstdlib、 和sudo是外部 git repos 的子模块。文件夹sysctltemplate是 repo 中的文件夹。

我已经尝试删除模块并重新添加它,但现在似乎无法推送任何提交。我做了一些搜索,发现很少有错误。如何解决此错误?

4

2 回答 2

9

我终于能够解决这个问题。这是我为解决它所做的:

在文章https://help.github.com/articles/remove-sensitive-data中有一个标题为Purge the file from your repo。我按照他们的示例删除了 Rakefile,但使用了有问题的文件夹:

git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch modules/sudo' --prune-empty --tag-name-filter cat -- --all

由于有问题的树是我添加-r到命令中的文件夹。结果是清除了 sudo 模块的所有提交,因此对象15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22消失了!提交更改后,推送成功。我后来能够毫无问题地重新添加损坏的模块。

于 2013-02-06T22:05:55.213 回答
0

尝试将 github 存储库(裸)克隆到另一个本地目录。然后将其添加为遥控器并尝试推送到该遥控器。如果这失败了,那么你的问题可能是本地的。(这将是我的猜测)

如果没有,我仍然会尝试克隆您的“工作存储库”并尝试从该克隆推送到您之前添加的本地远程。

如果这没有帮助,您可以重命名/备份您的 github 存储库并创建一个新存储库,或者必须联系 github 支持。

于 2012-12-23T12:33:18.300 回答