Comment fixer le dépôt git brisé par interrompu git fetch?
Si git fetch
est interrompu, par exemple par Ctrl-C ou causés par des problèmes de connectivité, après que git fetch
et aussi git pull
ne parviennent pas à travailler.
user@computer:~/code/openttd-git$ git fetch
^C
user@computer:~/code/openttd-git$ git fetch
error: Unable to find 22d90742fc79a9011fb86ee03d8aeea66bc12657 under http://git.openttd.org/openttd/trunk.git
Cannot obtain needed object 22d90742fc79a9011fb86ee03d8aeea66bc12657
error: Fetch failed.
Je crois que ce n'est pas lié au référentiel. À l'aide de git clone
pour créer une copie de ce cassé dépôt local dans un nouveau référentiel local ne permet pas de résoudre ce problème. La seule solution que je connaisse pour l'instant est à git clone
l'ensemble du dépôt distant (origin/master
) dans un nouveau référentiel local. Mais est-il mieux (plus rapide) solution?
Il est Debian rapport de bug qui a le dernier message à partir de février 2011. Est-ce le même bug que j'ai ou est-il déjà un correctif ou de toute solution ou solution de contournement? Mon git version 1.7.10.
OriginalL'auteur nrz | 2012-05-20
Vous devez vous connecter pour publier un commentaire.
trouver un
*.pack.temp
dans.git/objects/pack
dans votre dépôt local. Ensuite trouver un.idx
fichier avec le même nom de base, et de se déplacer à la fois de loin (ou de les supprimer, mais il est mieux d'être sûr que désolé). Réexécutezgit fetch
et cela devrait fonctionner (bien, il l'a fait pour moi).Par exemple:
*.pack.temp
et correspondant*.idx
fichiers (j'ai eu 3 fois). J'ai passé tous d'entre eux dans un répertoire distinct, et après quegit fetch
etgit merge origin/master
a fonctionné correctement.OriginalL'auteur Matija Nalis
Essayer ces commandes:
Je viens de toucher le même problème et ces commandes n'ont pas le résoudre (comme mentionné dans l'un des commentaires ci-dessous).
Cela ne résout pas le problème.
$ git fsck
sorties:Checking object directories: 100% (256/256), done.
Checking objects: 100% (161159/161159), done.
Puis$ git gc
sorties:Counting objects: 157646, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (24579/24579), done.
Writing objects: 100% (157646/157646), done.
Total 157646 (delta 133211), reused 157173 (delta 132738)
. Et puis$ git fetch
sorties le même que ci-dessus, si cela ne résout pas le problème.Vous pourriez avoir à exécuter dans les deux vos propres pensions et les pensions de votre extraction. Peut-être qu'un jour je vais déterminer la véritable étape importante, mais ce que je peux dire pour sûr que mon problème a disparu.
OriginalL'auteur klogg
dit d'utiliser rsync :
a fonctionné pour moi
OriginalL'auteur teaforthecat
Êtes-vous en mesure d'exécuter :
En théorie, si vous venez d'exécuter
git fetch
, vous devriez être capable de:Cela devrait ignorer les changements causés par l'interruption de la opération de récupération, le retour de votre référentiel à un état antérieur. À ce stade, vous devriez être en mesure de relancer votre
fetch
opération.git reset --hard HEAD~20
(par exemple) et il fonctionne sans problème, mais le problème avecgit fetch
etgit pull
reste le même. Je pense que le "besoin de l'objet" doit être fixé en quelque sorte, mais je ne sais pas comment.OriginalL'auteur larsks
Avez-vous essayé de nettoyer le repo?
Être averti, que la commande ci-dessus nettoie également le reflog choses.
git gc
résultats suivants:user@computer:~/code/openttd-broken-git$ git gc Counting objects: 150683, done. Delta compression using up to 8 threads. Compressing objects: 100% (24232/24232), done. Writing objects: 100% (150683/150683), done. Total 150683 (delta 126184), reused 150626 (delta 126127) bad sha1 file: .git/objects/22/d90742fc79a9011fb86ee03d8aeea66bc12657.temp
Après quigit fetch
sorties:error: Unable to find ce35909568caea9116c69b0a9d0cf6810d6507a5 under http://git.openttd.org/openttd/trunk.git Cannot obtain needed blob ce35909568caea9116c69b0a9d0cf6810d6507a5
...OriginalL'auteur positron
Il est probable que le référentiel est corrompu. L'exécution de
git fsck
etgit gc
sur le serveur pourrait le résoudre. Le clonage dans un répertoire distinct et en tirant à partir de ce répertoire permettra également de vous donner la commet. Après ungit fetch
de travail, car il ne met à jour les références et n'ont pas de chercher tous les objets.OriginalL'auteur bcmpinc