2016-06-10 7 views
13

sto ottenendo il seguente errore se mi tira per recuperare da remotogit fatale: non è riuscito a leggere oggetto xxx: Invalid argument

$ git pull 
remote: Counting objects: 85, done. 
remote: Compressing objects: 100% (37/37), done. 
remote: Total 85 (delta 63), reused 69 (delta 48) 
Unpacking objects: 100% (85/85), done. 
error: inflate: data stream error (unknown compression method) 
fatal: failed to read object 8b0fd4094630fea108b60faa15535ffbc85d87cb: Invalid argument 
error: http://myremoterepo.com/project.git did not send all necessary objects 

posso impegnarsi a livello locale. Quando controllo lo stato:

> $ git status On branch vikas Your branch is based on 'origin/master', 
> but the upstream is gone. (use "git branch --unset-upstream" to 
> fixup) nothing to commit, working directory clean 
+0

Vedere [questo] (http://stackoverflow.com/questions/25527812/git-corrupted-repo-how-to-pick-a-git-object-from-a-clean-repository) e [this] (http://stackoverflow.com/questions/4254389/git-corrupt-loose-object) – pRaNaY

+0

Quando ho aperto un file '8b/0fd4094630fea108b60faa15535ffbc85d87cb', il suo' 0000 0000' o 'NULL NULL NULL ...' – Vikas

risposta

34

Finalmente sono stato in grado di risolvere questo problema. Penso che il problema sia successo quando il mio computer si è spento a causa di un'interruzione di corrente.

Sono stato in grado di commettere eventuali modifiche in qualsiasi delle mie filiali locali. Ciò significa che il mio file pack non è danneggiato ma alcuni ref non sono validi.

Eseguire prima il backup del .git. Poi io uso git fsck comando

$ git fsck --full 
error: inflate: data stream error (unknown compression method) 
error: unable to unpack 38fe6f16c7e8246d61150f0bc42629dbb532b5ce header 
error: inflate: data stream error (unknown compression method) 
fatal: loose object 38fe6f16c7e8246d61150f0bc42629dbb532b5ce (stored in .git/objects/38/fe6f16c7e8246d61150f0bc42629dbb532b5ce) is corrupt 

ho cancellato il file .git/objects/38/fe6f16c7e8246d61150f0bc42629dbb532b5ce e continuando questi passaggi fino a ottenere output seguente:

$ git fsck --full 
Checking object directories: 100% (256/256), done. 
Checking objects: 100% (168543/168543), done. 
error: refs/remotes/origin/staging: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: refs/remotes/origin/development: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: refs/remotes/origin/master: invalid sha1 pointer 0000000000000000000000000000000000000000 
error: bad ref for refs/remotes/origin/staging 
broken link from commit 8b0fd4094630fea108b60faa15535ffbc85d87cb 
       to commit bac9f287963b1abb9e4b376b44b4a6500018e9fe 
Checking connectivity: 169821, done. 
dangling blob 750718546640b5b14c19cbdb9958d7bcc4b1114c 
dangling blob e313786318d4c76004728f15a25c6fa68c88b67e 
dangling blob ee3fd85992b48173f6c344a9f4a2f9667d4e1940 
dangling blob cd4898a3ec525e559292337c0bc6b68a77270b52 
dangling blob 9973506f35af1bf4e7790be57b02c70852843f92 
dangling blob 47ca4080b9a528efe23c9f7dce994815f5f9162a 
dangling blob 39d6807d215a7e74fb987d951a90e1d3e24a97eb 
dangling blob c0d650286c3702d56b827eded27eaa9515212847 
dangling commit 53db70d776ec7a59c10db106ef2585abea1ffddd 
... 

Ora ho rimosso tutti i tre arbitri (.git/refs/remotes/origin/master, .git/refs/remotes/origin/staging, .git/refs/remotes/origin/development)

Voilà! Ora ero in grado di tirare e spingere!

P.S. appreso da here

+1

Dopo l'eliminazione di quegli oggetti che ricevono i delta non risolti per gli oggetti eliminati –

+1

@Vicas: Puoi approfondire cosa intendevi esattamente con "... rimossi tutti e tre i riferimenti ..."? Intendi semplicemente cancellare questi file? Cancellare il loro contenuto? – MeirG

+0

@Vikas: Mi dispiace, ho sbagliato a scrivere ... Si prega di vedere sopra. Grazie! – MeirG