2009-10-19 14 views
5

Sto cercando di eseguire git clone e sto ricevendo il seguente errore:git-clone errore di allocazione della memoria

fatal: Out of memory, malloc failed 
fatal: index-pack died with error code 128 
fetch-pack from '[email protected]:git' failed. 

sono stato in grado di fare con successo un clone sulla mia macchina locale, ma è mancato quando provo clonare su un altro server.

Ancora un po 'nuovo per questa cosa tutta git, quindi qualsiasi aiuto sarebbe molto apprezzato. :)

+0

Penso che il fatale stia accadendo sul server; quanta memoria ha il server? Quanto è grande il repo? Cosa dicono 'git count-objects'? –

+0

Cosa intendi esattamente quando dici "clone ** in ** un altro server"? – innaM

risposta

5

Hai file di grandi dimensioni nel tuo repository (ad esempio file di registro)?
Apparentemente, il tuo repository è troppo grande per essere recuperato sul tuo disco rigido.

Ci sono due cose che si possono fare:

  • Verificare la presenza di file di grandi dimensioni e rimuoverli se non sono utili (e non solo con l'impegno ma anche da modifying your history Se avete ancora i vostri files di grandi dimensioni.. la nostra repository, non sarà più piccola.
  • fare un "git gc". sarà automaticamente i file inutilizzati di pulizia e comprimere il repository.
+0

git crea un nuovo pacchetto per ogni clone, contenente gli oggetti rilevanti per il cloner; quindi, non credo che git gc ti aiuterà. –

+0

Sì, abbiamo trascurato un file di grandi dimensioni (in questo caso un archivio zip) che sembrava causare il problema. Quel collegamento sulla modifica della storia è stato di grande aiuto. Grazie per quello. – nevan

+0

come si fa su un ramo remoto? – Paul

1

Se git sulla macchina remota fallisce a causa di voi vincoli di memoria potrebbe anche provare rsync o scp per copiare il repository sul computer locale e continuare con la clonazione da lì.

0

È possibile eseguire il comando git clone con --depth -1. Questo recupererà solo l'ultimo commit, quindi le operazioni che coinvolgono la cronologia (git log, blame o anche push/pull) potrebbero non funzionare. Ma ha bisogno di meno memoria, spazio su disco e trasferimenti di rete.

Le limitazioni sono descritte c'è: Why can't I push from a shallow clone?

Problemi correlati