J'ai frappé au hasard aujourd'hui en essayant d'exécuter le ramasse-miettes Git :
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Comment gérer cela?
J'ai frappé au hasard aujourd'hui en essayant d'exécuter le ramasse-miettes Git :
$ git gc
fatal: bad object refs/remotes/origin/HEAD
error: failed to run repack
Comment gérer cela?
Je ne comprends pas les ramifications de cela, mais comme suggéré dans ce fil , quand j'ai rencontré cela, je viens de le faire
$ mv .git/refs/remotes/origin/HEAD /tmp
(en le gardant juste au cas où) et ensuite
$ git gc
travaillé sans se plaindre; Je n'ai rencontré aucun problème.
master
à une autre appeléedevelop
. Quelques jours avant de le changer dedevelop
àmaster
et j'ai supprimé l'ancienne branche par défautdevelop
, mais dans mon répertoire de travail, le fichier.git/refs/remotes/origin/HEAD
pointait toujours versrefs/remotes/origin/develop
lequel n'existe plus. Dans cette situation, la suppression du fichier a fonctionné.git prune
a fonctionné pour moi, un moyen de supprimer les données qui se sont accumulées dans Git mais qui ne sont référencées par rien d'utile.$ mv .git/refs/remotes/origin/HEAD /tmp
$ git gc
git prune
git gc
fonctionné pour moiLe problème que j'ai rencontré (qui est le même problème que @Stavarengo mentionné dans ce commentaire ci-dessus) est que la branche distante par défaut (
develop
dans mon cas) avait été supprimée, mais était toujours référencée dans.git/refs/remotes/origin/HEAD
.L'ouverture
.git/refs/remotes/origin/HEAD
dans mon éditeur a montré ceci:Je l'ai soigneusement édité pour pointer vers ma nouvelle branche par défaut et tout allait bien:
L'indice qui m'a informé était que la course à pied
git prune
montrait cette erreur:la source
Après avoir vu la réponse de Trenton, j'ai regardé ma
.git/refs/remotes/origin/HEAD
et j'ai vu qu'elle indiquait également une ancienne branche qui est maintenant supprimée.Mais au lieu d'éditer le fichier moi-même, j'ai essayé la solution de Ryan:
Il a automatiquement défini le fichier sur la nouvelle branche et
git gc
a bien fonctionné par la suite.la source
git remote set-head $REMOTE --auto
dans mon cas, $ REMOTE est l'alias distant, pas l '«origine» par défaut, car j'ai plusieurs télécommandes.Je pensais que la solution était la suivante car cela semblait fonctionner, mais cela ne résout pas réellement le problème.
la source
git prune
(comme cela était recommandé dans la première sortie de commande), donc je ne suis pas en mesure de dire exactement ce qui m'a aidé - premier, deuxième ou les deux.git remote set-head origin --auto
corrigé mon fichier refs / remotes / origin / HEAD sans que j'aie à utilisergit prune
error: Multiple remote HEAD branches. Please choose one explicitly
dû utilisergit remote set-head origin mybranch
(pendant que la branche 'mybranch' était à la caisse) pour que l'erreur disparaisse.On dirait que vos références symboliques pourraient être cassées ... Essayez de la remplacer par votre branche par défaut comme ceci: Par exemple, ma branche par défaut est master
Cela devrait le réparer.
la source
Si vous utilisez git worktrees, assurez-vous de faire un
avant de courir
J'avais un arbre de travail corrompu et cela semblait faire l'affaire après avoir supprimé l'arbre de travail corrompu.
git prune
en soi ne semblait pas fonctionner.la source
La cause de cela pour moi était de travailler dans un dossier compressé dans Windows. Lorsque le dossier était décompressé, il corrompait les fichiers du pack, provoquant d'autres problèmes étranges, tels que l'impossibilité d'élaguer les branches inexistantes.
Le seul correctif était d'effacer le répertoire de travail et de cloner à nouveau le (s) distant (s) du dépôt. Heureusement, je pouvais toujours pousser et tirer des mises à jour pour m'assurer que rien n'était perdu. Tout va bien maintenant.
la source