2012-09-30 24 views
14

我不知道我是如何陷入這個混亂的。但是當我嘗試將我的存儲庫推送到GitHub時,我遇到了error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null。全推:按下時出現Git錯誤:對象15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:包含指向null的條目

[[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-樹顯示,我的須藤模塊是空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 
... 

上市sshstdlibsudo是外部的git回購的子模塊。文件夾sysctltemplate是回購中的文件夾。

我試過刪除模塊並重新添加它,現在似乎無法推送任何提交。我做了一些搜索,發現錯誤很少。我該如何解決這個錯誤?

+0

看起來像你的回購是搞砸了,試圖fsck或者我希望你有一個備份或另一個克隆開始 – CharlesB

+0

當我運行'git fsck --full'它不會返回任何東西。我認爲沒有什麼可以做的。 –

+0

所以你需要備份... – CharlesB

回答

7

我終於能夠解決這個問題。以下是我所做的解決方法:

在文章https://help.github.com/articles/remove-sensitive-data中有一個標題爲清除您的回購文件。我跟隨他們去除Rake文件的例子,但使用了有問題的文件夾而不是:

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

由於問題的樹是我添加-r到命令的文件夾。結果是清理了所有對sudo modiles的提交,因此,對象15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22消失了!變更提交後,推送成功。之後我能夠重新添加已損壞的模塊而沒有問題。

0

嘗試克隆github回購(裸)到另一個本地目錄。 然後將其添加爲遠程並嘗試推送到該遠程。 如果這失敗了,那麼你的問題可能是本地的。 (這將是我的猜測)

如果不是,我仍然會嘗試克隆您的「工作回購」並嘗試從該克隆推送到先前添加的本地遠程。

如果這沒有幫助,您可以重命名/備份您的github repo並創建一個新的或必須聯繫github支持。

+1

我會接受這個,因爲它包含了我最終必須做的事情,那就是殺死GitHub repo並重新創建它,然後推送它。這是GitHub遙控器上的一個問題。我聯繫了GitHub支持,但與他們並沒有太大的距離。將它吹走並重新創建是最簡單的。 –

+0

我再次遇到這個錯誤,並試過這個。但同樣的問題發生。 sudo commit有一個null sha1。我殺了現有的GitHub回購,並試圖推到一個新的遙控器,並得到同樣的問題。是否有可能修復本地回購? –

相關問題