Risposte:
Non capisco le ramificazioni di questo, ma come suggerito in questo thread , quando l'ho riscontrato l'ho appena fatto
$ mv .git/refs/remotes/origin/HEAD /tmp
(tenendolo in giro per ogni evenienza) e poi
$ git gc
ha lavorato senza lamentarsi; Non ho riscontrato alcun problema.
git pruneha funzionato per me, un modo per eliminare i dati accumulati in Git ma a cui non fa riferimento nulla di utile.
$ mv .git/refs/remotes/origin/HEAD /tmp $ git gc git prune
git gcfunzionato per me
Il problema che ho riscontrato (che è lo stesso problema menzionato da @Stavarengo in questo commento sopra) è che il ramo remoto predefinito ( developnel mio caso) era stato eliminato, ma era ancora referenziato .git/refs/remotes/origin/HEAD.
L'apertura .git/refs/remotes/origin/HEADnel mio editor ha mostrato questo:
ref: refs/remotes/origin/develop
L'ho modificato con cura in modo che punti al mio nuovo ramo predefinito e tutto è andato bene:
ref: refs/remotes/origin/master
L'indizio che mi ha fatto capire è che la corsa ha git prunemostrato questo errore:
> git prune
warning: symbolic ref is dangling: refs/remotes/origin/HEAD
Dopo aver visto la risposta di Trenton, ho guardato la mia .git/refs/remotes/origin/HEADe ho visto che puntava anche a un vecchio ramo che ora è stato cancellato.
Ma invece di modificare il file da solo, ho provato la soluzione di Ryan:
git remote set-head origin --auto
Ha impostato automaticamente il file sul nuovo ramo e ha git gcfunzionato bene dopo.
git remote set-head $REMOTE --autonel mio caso, $ REMOTE è l'alias remoto, non l '"origine" predefinita, perché ho configurato più telecomandi.
Ho pensato che la soluzione fosse la seguente poiché sembrava funzionare, ma risulta che non risolve effettivamente il problema.
git remote set-head origin --auto
git prune(come consigliato nel primo output del comando), quindi non sono in grado di dire esattamente cosa mi ha aiutato: primo, secondo o entrambi.
git remote set-head origin --autorisolto il mio file refs / telecomandi / origine / HEAD senza che io dovessi usaregit prune
error: Multiple remote HEAD branches. Please choose one explicitlye ho dovuto usare git remote set-head origin mybranch(mentre il ramo "mybranch" era in fase di checkout) per far scomparire l'errore.
Sembra che i tuoi riferimenti simbolici potrebbero essere interrotti ... Prova a sostituirlo con il tuo ramo predefinito in questo modo: Ad esempio, il mio ramo predefinito è master
$ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
$ git fetch --prune
$ git gc
Questo dovrebbe risolverlo.
La causa di ciò per me stava lavorando in una cartella compressa in Windows. Quando la cartella è stata decompressa, ha danneggiato i file del pacchetto, causando altri strani problemi, come l'impossibilità di potare rami inesistenti.
L'unica soluzione era cancellare la directory di lavoro e clonare nuovamente i remoti del repository. Fortunatamente, potevo ancora eseguire il push e il pull degli aggiornamenti per assicurarmi che nulla andasse perso. Adesso va tutto bene.
mastera un altro chiamatodevelop. Giorni prima ho cambiato di nuovo dadevelopamastere ho cancellato il vecchio ramo predefinitodevelop, ma nella mia directory di lavoro, il file.git/refs/remotes/origin/HEADpuntava ancora arefs/remotes/origin/developcui non esiste più. In questa situazione la rimozione del file ha funzionato.