2011-10-06 16 views
10

Po twardym resecie mojego laptopa, który po freezed git commit, mam następujący problem, kiedy wprowadzić dowolne polecenie na moim repozytorium git:Jak przywrócić uszkodzone repozytorium git?

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

Czy mimo odzyskać mojego repozytorium git?

nie mogę znaleźć rozwiązanie z dwoma następującymi pytaniami:

EDIT: Nie znaleziono co spowodowało uszkodzenie mojego repozytorium git ani jakiegokolwiek rozwiązania aby go przywrócić ... W końcu zacząłem nad nowym klonem z mojego repozytorium SVN!

+2

Pierwszym krokiem jest sprawdzenie systemów plików. Ten błąd jest dziwny. Czy "fsck" lub cokolwiek innego ma na to Twój system operacyjny? I wykonaj ** BACKUP ** zanim zrobisz cokolwiek innego. – Mat

+0

Prawie wszystkie odpowiedzi zakładają, że można po prostu ponownie sklonować z jakiegoś niezniszczalnego zdalnego pochodzenia. Oto problem ... Co, jeśli ** jesteś ** źródłem i jesteś zepsuty? Dobrze. A więc tutaj: 'git-repair' to program, który uruchomi' git fsck' i spróbuje dość mocno naprawić wszelkie napotkane problemy. https://git-repair.branchable.com/ Wydaje się być całkiem zdolnym, i choć możesz skończyć kopiowaniem (jeśli możesz!) obiektów z kopii zapasowej (masz kopię zapasową, prawda?), to powinno Cię oszczędzić dużo czasu, ratując wszystko, co może, i pozostawiając ci prawdziwą pracę, a nie wiele zadań, które można zautomatyzować. Brak przynależności itp. –

Odpowiedz

2

Dla mnie żadna z powyższych odpowiedzi pracował. Właśnie sklonowałem moje repozytorium git i wszystko było w porządku. Przed klonowaniem otworzyłem wszystkie pliki, które zostały zmienione i po prostu nadpisałem je po przeciągnięciu.

Dlatego należy często się dzielić :).

1

Czy ostatnio przerzuciłeś swoje repozytorium gdziekolwiek, na przykład github lub bitbucket? Możesz dostać inny klon i skopiować katalog obiektów.

Inaczej:

Zobacz, jak wiele z tych run:

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

Z reflog, zobaczyć, który z nich można zrobić udane dziennik z. mam nadzieję, że to tylko twój ostatni commit, który jest uszkodzony lub jeden z jego drzew.

Nadzieja to pomaga

+1

Oczywiście mogę zacząć od nowego klona, ​​mam nadzieję, że nie jestem zbyt daleko od mojego svn trunk (moje lokalne repo jest klonem git-svn). Zastanawiałem się jednak, czy tego rodzaju problem można odzyskać i jaki był jego powód, aby uniknąć powtórzenia tego w przyszłości. – greydet

Powiązane problemy