Réponses:
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.
git prunea 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 gcfonctionné pour moi
Le 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 ( developdans 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/HEADdans mon éditeur a montré ceci:
ref: refs/remotes/origin/develop
Je l'ai soigneusement édité pour pointer vers ma nouvelle branche par défaut et tout allait bien:
ref: refs/remotes/origin/master
L'indice qui m'a informé était que la course à pied git prunemontrait cette erreur:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Après avoir vu la réponse de Trenton, j'ai regardé ma .git/refs/remotes/origin/HEADet 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:
git remote set-head origin --auto
Il a automatiquement défini le fichier sur la nouvelle branche et git gca bien fonctionné par la suite.
git remote set-head $REMOTE --autodans 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.
git remote set-head origin --auto
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 --autocorrigé mon fichier refs / remotes / origin / HEAD sans que j'aie à utilisergit prune
error: Multiple remote HEAD branches. Please choose one explicitlydû utiliser git 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
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Cela devrait le réparer.
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.
masterà une autre appeléedevelop. Quelques jours avant de le changer dedevelopàmasteret j'ai supprimé l'ancienne branche par défautdevelop, mais dans mon répertoire de travail, le fichier.git/refs/remotes/origin/HEADpointait toujours versrefs/remotes/origin/developlequel n'existe plus. Dans cette situation, la suppression du fichier a fonctionné.