2011-10-06 31 views
10

Sau khi hard reset của máy tính xách tay của tôi rằng freezed sau một git commit, tôi có lỗi sau khi tôi nhập bất kỳ lệnh trên kho git của tôi:Làm cách nào để khôi phục kho lưu trữ git bị hỏng?

$ git status 
fatal: failed to read object de02e6d5cd7823ea788429a33583bede09221163: Invalid argument 

Liệu có cách nào để khôi phục lại kho git của tôi?

tôi không tìm thấy một giải pháp từ hai câu hỏi sau:

EDIT: Tôi không tìm thấy những gì gây ra tham nhũng của kho git của tôi hay bất kỳ giải pháp để khôi phục nó ... Tôi cuối cùng đã bắt đầu trên một bản sao mới từ kho SVN của tôi!

+2

Bước đầu tiên ở đây là kiểm tra hệ thống tệp của bạn. Lỗi đó là lạ. Bạn có 'fsck' hoặc bất kỳ hệ điều hành nào của bạn có cho điều đó không? Và làm một ** BACKUP ** trước khi bạn làm bất cứ điều gì khác. – Mat

+0

Gần như tất cả các câu trả lời giả định người ta có thể chỉ đơn giản là tái sao chép từ một số nguồn gốc từ xa uncorruptible. Đây là vấn đề ... Nếu bạn ** là ** nguồn gốc, và bạn đang bị hỏng? Đúng. Vì vậy, ở đây: 'git-repair' là một chương trình sẽ chạy' git fsck' và thử khá nhiều để sửa bất kỳ vấn đề nào nó gặp phải. https://git-repair.branchable.com/ Nó có vẻ khá có khả năng, và mặc dù bạn có thể sẽ phải sao chép (nếu bạn có thể!) các đối tượng từ một bản sao lưu (bạn có một bản sao lưu, phải không?), nó sẽ giúp bạn tiết kiệm rất nhiều thời gian bằng cách cứu vãn bất cứ điều gì nó có thể và để lại cho bạn công việc thực sự, không có nhiều nhiệm vụ tự động hóa. Không có liên kết, vv –

Trả lời

2

Đối với tôi, không có câu trả lời nào ở trên hiệu quả. Tôi chỉ tái nhân bản repo git của tôi và tất cả đều tốt. Trước khi nhân bản, tôi mở tất cả các tập tin đã được thay đổi và chỉ ghi đè lên chúng sau khi kéo.

Đó là lý do tại sao bạn nên cam kết thường xuyên :).

1

Bạn đã đẩy kho lưu trữ của mình đến bất cứ đâu như github hoặc bitbucket gần đây? Bạn có thể nhận một bản sao khác và sao chép thư mục đối tượng.

Nếu không:

Xem có bao nhiêu trong số này chạy:

git fsck 
git branch -a 
git branch -a | xargs -n 1 git log -1 
git reflog 

Với reflog, xem đó là một trong những bạn có thể làm một bản ghi thành công từ. hy vọng đó chỉ là cam kết mới nhất của bạn bị hỏng hoặc một trong số đó là cây cối.

Hy vọng điều này sẽ giúp

+1

Chắc chắn tôi có thể bắt đầu trên một bản sao mới, hy vọng tôi không quá xa thân cây svn của tôi (repo địa phương của tôi là một bản sao git-svn). Nhưng tôi đã tự hỏi nếu loại vấn đề này có thể được phục hồi và nguồn gốc của nó là gì để tránh tái tạo nó trong tương lai. – greydet

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