Git pull error-l'objet distant est corrompu

$ git pull

remote: fatal: object 21f3981dd35fccd28febabd96f27241eea856c50 is corrupted
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header

des idées pourquoi cet échec?

Quand je run git --bare fsck-objects --full je vois juste des liens pendants mais pas de liens cassés. Aussi git gc n'a pas aidé en aucune façon. Quand je me redresse ou que je tire d'un autre clone, Je ne vois pas cette erreur.

44
demandé sur simont 2010-11-13 03:59:50

7 réponses

Julien a dit voir https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

Il ne peut vraiment être un problème de mémoire, et pour nous assurer de ne pas perdre de la solution, la voici:

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
27
répondu cazcade_neil 2013-11-29 22:08:56

ajouter git config --global pack.window "0" a fonctionné pour moi...avec la suite

git config --global pack.windowMemory "100m"
git config --global pack.packSizeLimit "100m" 
git config --global pack.threads "1"

Raison:

le clone Git comprime les données tout en clonant le dépôt

il comprime les données sur la mémoire du serveur avant de recevoir les données/fichiers.

si le serveur n'a plus de mémoire, vous obtiendrez l'erreur ci-dessus en empaquetant les objets

vous pouvez corriger le problème en faisant cloner git le dépôt sans empaqueter les objets sur le serveur avec les éléments suivants.

git config --global pack.window "0"

15
répondu logan 2015-07-08 20:17:26

Il semble que la réponse est dans les commentaires: git fsck

12
répondu robrich 2012-05-08 04:51:29

je Viens de recevoir cette erreur, et passé une demi journée à faire toutes les choses que décrit dans le post : fsck, repack, gc, la configuration des options de mémoire.

a également suivi ce billet: http://git.kernel.org/cgit/git/git.git/tree/Documentation/howto/recover-corrupted-blob-object.txt?id=HEAD

Mais à la fin, c'était aussi simple que de trouver l'objet endommagé(21f3981dd35fccd28febabd96f27241eea856c50 dans ce cas) dans le dépôt nu et de le remplacer par le non version endommagée (que l'on peut trouver dans le .dossier git de n'importe lequel des dépôts locaux qui a tiré/cloné du dépôt nu.)

5
répondu Shiva 2014-01-09 13:12:02

cela résout le problème pour moi et hope aide quelqu'un d'autre. :) https://confluence.atlassian.com/display/FISHKB/Git+indexing+fails+due+to+bad+pack+header

1
répondu Julian 2013-11-20 14:48:46

dans le client,essayez de faire comme ceci:

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m" 
git config --global pack.threads "1"
git config --global pack.window "0"

ou dans le serveur git, essayez ceci: modifier: /home/git/repositories/***.git/config,ajouter ci-dessous:

[pack]
         window = 0 
1
répondu litian.zhuang 2017-06-19 06:50:14

Pour moi, c'était parce que mon serveur distant hébergeant le repo git avait un objet endommagé/fichier. Quand j'ai essayé de faire mes bagages, il manquait de mémoire. J'ai mis à jour ma mémoire d'instance et puis ssh-ed de retour et couru

git gc

Voici le lien vers la documentation:

https://git-scm.com/book/uz/v2/Git-Internals-Packfiles

0
répondu zeros-and-ones 2016-11-12 07:03:00