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 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 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 ( 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:
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 prune
montrait 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/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:
git remote set-head origin --auto
Il a automatiquement défini le fichier sur la nouvelle branche et git gc
a bien fonctionné par la suite.
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.
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 --auto
corrigé mon fichier refs / remotes / origin / HEAD sans que j'aie à utilisergit prune
error: Multiple remote HEAD branches. Please choose one explicitly
dû 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
à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é.