2010-02-02 24 views
8

Ứng dụng của tôi, trong hệ thống tệp của tôi, hoạt động tốt. Tất cả các bài kiểm tra đều vượt qua.Làm thế nào để thay thế các đối tượng Git bị hỏng bằng các đối tượng mới được tạo từ các tệp của tôi, đó là tốt

Tôi là một nhà phát triển duy nhất, sử dụng Git chủ yếu để sử dụng Heroku cũng như để sao lưu.

Git đã ngừng hoạt động vì các đối tượng bị hỏng.

tôi nhận được lỗi mà trông như thế này: (. Và nhiều lỗi khác, tất cả với lý do đối tượng bị hỏng)

steven-nobles-imac-200:drominay steven$ git push heroku master 
error: inflate: data stream error (invalid distance too far back) 
fatal: object 990ad2766afa2e2002eea265225ad160e73eacd2 is corrupted 
error: pack-objects died with strange error 

Làm thế nào để tôi nhận được Git để ném ra các đối tượng tham nhũng và thay thế chúng với các đối tượng mới được tạo từ bản sao làm việc của ứng dụng của tôi?

Git init không giải quyết được sự cố.

Cảm ơn!

Trả lời

10

Bạn cần sử dụng git-fsck. Hướng dẫn có details, nhưng ý chính là git-fsck sẽ đảm bảo rằng kho lưu trữ là nội bộ phù hợp và liệt kê các đối tượng còn thiếu, sau đó bạn có thể sử dụng git hash-object -w <correct-file> để đưa tệp được đưa vào kho lưu trữ. Nếu tệp được cung cấp cho đối tượng băm thực sự là tệp đã bị hỏng, kho lưu trữ của bạn hiện đã hoàn tất lại :).

Đã cập nhật để thêm: Git repair thực hiện những điều tương tự, nhưng tự động :).

+0

Nhưng điều đó không hiệu quả nếu đối tượng được đề cập nằm trong gói, phải không? Làm thế nào tôi sẽ nói với git để sử dụng các đối tượng phục hồi và không phải là một trong các tập tin gói? –

+0

@FrederickNord, tùy chọn tốt nhất hiện nay (và tôi đã chỉnh sửa câu trả lời của tôi cho phù hợp) là sử dụng git-sửa chữa của Joey Hess. –

Các vấn đề liên quan