2011-10-04 15 views
6

Mam obiekt git, który jest uszkodzony. Rozmiar pliku wynosi 0 w katalogu obiektów git.Jak odzyskać od uszkodzonego luźnego pliku w git

Najpierw fsck:

git fsck --full 
fatal: loose object a35c1489005cca1ffeb3c2d3e4d63988408b6a24 (stored in .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24) is corrupted 

następnie ls:

ls -l .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 
----------+ 1 sampath ???????? 0 Sep 13 15:26 .git/objects/a3/5c1489005cca1ffeb3c2d3e4d63988408b6a24 

Ten plik nie istnieje na dysku !?

# git cat-file -t a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
error: unable to find a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
fatal: git cat-file a35c1489005cca1ffeb3c2d3e4d63988408b6a24: bad file 

Pierwszy błąd zobaczyłem, gdy próbowałem wykonać pociągnięcie.
Próbowałem usunąć plik i wykonać ciągnięcie, ale to nie zadziałało. Skarżyło się, że brakuje pliku.

Kiedy usunąłem plik i pobiegł fsck, pokazała mi wiele zwisające obiektów

# git fsck --full 
broken link from commit 1e5980c224ff19b19ad99dbefed4c7c64c58aee6 
       to tree a35c1489005cca1ffeb3c2d3e4d63988408b6a24 
dangling tree 0401d636a512b208dffd6ac6e153ab0a061f8d5d 
dangling blob 58014c0266784a1e3cc1502de82837c5f36c8514 
dangling tree 0507fa56260c693cea678eab0343240c5bba06ad 
dangling tree 130770880c664a0b0cf5a21d037cbdba7480dc90 

ja zmęczony wraca kilka zobowiązuje i to nie pomogło.
Jakieś wskazówki, jak odzyskać od tego?

+1

Czy masz gdzieś kopię repo? Jeśli to zrobisz, zacznij od obiektu. Skoro go wyciągnąłeś skądś, mam nadzieję, że masz ten obiekt w tym repozycie – Andy

+0

http://support.google.com/questions/801577/how-to-recover-git-objects-damaged-by-hard-disk-failure help ? (jeśli masz kopie zapasowe tego repo, oczywiście) – VonC

+0

Próbowałem tego. Sklonowałem repozytorium i rozpakowałem obiekty. Ale nie mogłem znaleźć luźnego pliku obiektu, który miał rozmiar 0. Czy to oznacza, że ​​należy do jednego z moich lokalnych zatwierdzeń, które nie zostały jeszcze odepchnięte na odległość? –

Odpowiedz

1

Wygląda na to, że drzewo jest uszkodzone. Jeśli znasz swoją strukturę wokół tych zatwierdzeń, możesz się domyślić, co to jest. Mam nadzieję, że możesz wydedukować, które pliki zostały dodane lub usunięte. Twoje kropelki i inne drzewa również będą zwisały. Jeśli naprawdę chcesz się z tego wyleczyć i nie masz żadnych innych klonów repozytorium, nadal jest to możliwe, ale wymaga to czasu, wysiłku i szczęścia.

Mam nadzieję, że to pomoże.

Powiązane problemy