2012-09-30 10 views
14

Kendimi bu karmaşaya nasıl aldım emin değilim. Ama depomı GitHub'a zorlamaya çalışırken error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null'a koşuyorum. Tam itme: Harici git repolarının Git hata: nesne 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22: null işaret eden girişler içerir

 
[[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 
... 

listelenmiş ssh, stdlib ve sudo olan submodüller:

[[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 ağacı benim sudo modülü boş sha1 olduğunu göstermektedir. Klasörler sysctl ve template, repo'daki klasörlerdir.

Modülü kaldırmayı ve yeniden eklemeyi denedim ve şimdi herhangi bir işlemi zorlayamıyorum. Bazı arama yaptım ve hata üzerinde çok az şey buldum. Bu hatayı nasıl çözebilirim?

+0

repo'nuz bozuk gibi görünüyor, fsck yapmayı deneyin veya umarım – CharlesB

+0

üzerinden başlamak için bir yedeğiniz veya başka bir klonunuz vardır. "Git fsck --full" ı çalıştırdığımda hiçbir şey dönmez. Sanırım fsck için bir şey yok. –

+0

böylece yedeklemeye ihtiyacınız var ... – CharlesB

cevap

7

Bu sorunu en sonunda çözebildim. İşte bunu çözmek için ne yaptım:

https://help.github.com/articles/remove-sensitive-data makalesinde için bir başlık var. Dosyanızı repo'dan temizleyin. Ben Rakefile kaldırmak için onların örneğini takip ancak bunun yerine sorunlu klasörü kullandı:

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

sorunlu ağaç ben komuta -r eklenen bir klasör olduğu için. Sonuç, sudo modiles için tüm taahhütlerin bir temizliğiydi ve bu nedenle, 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22 nesnesi kayboldu! Değişiklikleri taahhüt ettikten sonra itme başarılı oldu. Daha sonra bozuk modülü yeniden ekleme yapabildim.

0

Github repo'yu (çıplak) başka bir yerel dizine kopyalamayı deneyin. Ardından bunu bir uzaktan kumanda olarak ekleyin ve bu uzaktan kumandaya basmayı deneyin. Bu başarısız olursa, sorun muhtemelen yereldir. (Bu benim tahminim olur)

Değilse, yine de "çalışma repo'larınızı" klonlamaya çalışırım ve bu klondan daha önce eklediğiniz yerel uzaklığa itmeyi denerim. Bu yardımcı olmazsa, ya github repo'yu yeniden adlandırın/yedekleyin ve yeni bir tane oluşturun ya da github desteğine başvurmalısınız.

+1

Bunu eninde sonunda yapmam gereken şeyi içerdiği için kabul ediyorum, bu da GitHub repo'sunu öldürdü ve tekrar oluşturdu ve sonra ona itti. GitHub uzaktan kumandasında bir problemdi. GitHub desteğiyle temasa geçtim ama onlarla çok uzağa gitmedim. Sadece onu uçurup tekrar yaratmak en kolaydı. –

+0

Bu hatayı tekrar yaşadım ve bunu denedim. Ama aynı sorun olur. sudo işleminin boş bir sha1'i var. Mevcut GitHub repo'yu öldürdüm ve yeni bir uzaklığa gitmeye ve aynı sorunu çözmeye çalıştım. Yerel repo onarımı mümkün mü? –