2012-09-30 8 views
14

Tôi không chắc chắn làm thế nào tôi đã có bản thân mình vào mớ hỗn độn này. Nhưng tôi đang chạy vào error: object 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22:contains entries pointing to null khi cố gắng đẩy kho lưu trữ của tôi đến GitHub. Push đầy đủ: Lỗi Git khi đẩy: đối tượng 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22: chứa các mục trỏ đến 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-cây cho thấy rằng mô-đun sudo của tôi là một sha1 null:

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

Các niêm yết ssh, stdlib, và sudo là môđun con của Repos git bên ngoài. Các thư mục sysctltemplate là các thư mục trong kho lưu trữ.

Tôi đã thử xóa mô-đun và thêm lại mô-đun và dường như không thể đẩy bất kỳ cam kết nào ngay bây giờ. Tôi đã thực hiện một số tìm kiếm và tìm thấy rất ít lỗi. Làm thế nào tôi có thể giải quyết lỗi này?

+0

có vẻ như repo của bạn bị hỏng, cố gắng fsck hoặc tôi hy vọng bạn có bản sao lưu hoặc bản sao khác để bắt đầu qua – CharlesB

+0

Khi tôi chạy 'git fsck --full', nó không trả về bất kỳ thứ gì. Tôi cho rằng không có gì để fsck. –

+0

vì vậy bạn cần sao lưu ... – CharlesB

Trả lời

7

Tôi cuối cùng đã có thể giải quyết vấn đề này. Đây là những gì tôi đã làm để giải quyết nó:

Trong bài viết https://help.github.com/articles/remove-sensitive-data có một tiêu đề cho Làm sạch tệp từ repo của bạn. Tôi làm theo tấm gương của họ để loại bỏ các Rakefile nhưng sử dụng các thư mục có vấn đề thay vì:

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

Kể từ khi cây có vấn đề là một thư mục tôi đã thêm -r để lệnh. Kết quả là dọn dẹp tất cả các cam kết cho các biến thể sudo và do đó, đối tượng 15abe3addde5ad5f7d25e8f0f220d2e9faf3cb22 biến mất! Sau một cam kết của những thay đổi, sự thúc đẩy đã thành công. Sau đó tôi có thể thêm lại mô-đun bị hỏng mà không gặp vấn đề gì.

0

Hãy thử nhân bản github repo (trần) sang một thư mục cục bộ khác. Sau đó, thêm điều này làm điều khiển từ xa và cố gắng đẩy tới điều khiển từ xa đó. Nếu điều này không thành công, thì vấn đề của bạn có thể là cục bộ. (Đây có thể là dự đoán của tôi)

Nếu không, tôi vẫn cố gắng sao chép "repo làm việc" của bạn và thử đẩy từ bản sao đó sang điều khiển cục bộ bạn đã thêm trước đó.

Nếu điều này không hiệu quả, bạn hãy đổi tên/sao lưu repo github của bạn và tạo một bản mới hoặc phải liên hệ với bộ phận hỗ trợ github.

+1

Tôi sẽ chấp nhận điều này vì nó chứa những gì tôi cuối cùng phải làm, đó là giết repo GitHub và tạo ra nó một lần nữa và sau đó đẩy nó. Đó là một vấn đề trên điều khiển từ xa GitHub. Tôi đã liên lạc với bộ phận hỗ trợ của GitHub nhưng không liên lạc được với họ. Nó dễ dàng nhất là thổi nó đi và tạo ra nó một lần nữa. –

+0

Tôi đã gặp phải lỗi này một lần nữa và thử điều này. Nhưng cùng một vấn đề xảy ra. sudo commit có một null sha1. Tôi đã giết repo GitHub hiện tại và cố gắng đẩy tới một điều khiển mới và nhận được cùng một vấn đề. Có thể sửa chữa repo địa phương không? –