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?
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
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
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ść? –