Come rimuovere l'origine remota/refs/teste/master
-
28-10-2019 - |
Domanda
Non chiedermi come ma sono riuscito a ottenere accidentalmente i seguenti rami remoti in un repository Git:
$ git branch -r
origin/HEAD -> origin/master
origin/master
origin/refs/heads/master
Tutti indicano lo stesso commit. Come posso rimuovere l'elenco non necessario per origin/refs/heads/master
?
Ho provato a fare quanto segue
$ git push origin :refs/heads/master
error: dst refspec refs/heads/master matches more than one.
Ma come mostrato, questo dà un errore.
Soluzione 2
La soluzione era eliminare il ramo refs/heads/refs/heads/master
git push origin :refs/heads/refs/heads/master
Altri suggerimenti
In realtà non è una filiale sul telecomando: è solo un arbitro locale che afferma di rappresentare qualcosa sul telecomando, proprio come Origin/Master rappresenta la filiale principale sul telecomando. Il nome completo dell'arbitro è refs/remotes/origin/refs/heads/master
. Tutto quello che devi fare per eliminarlo è:
git branch -r -d origin/refs/heads/master
È vagamente possibile che tu sia riuscito a spingere anche questo (ma avresti dovuto fare più duramente per farlo). Se lo facessi, elencerei semplicemente gli arbitri di origine:
git ls-remote origin
E poi, se c'è qualcosa di stupido lì, usando git push origin :<refname>
sbarazzarsi di.
PS Se questo non lo fa per te, vorrai usare git for-each-ref
per vedere tutti i tuoi refs, e forse git ls-remote origin
per vedere tutti quelli remoti e rintracciare Esattamente Quali cose non appartengono, con i loro refnames pienamente qualificati.
È
git branch -r -d origin/ref/heads/master
invece di
git branch -r -d origin/refs/heads/master
Nella parte del codice per eliminare la filiale. C'è differenza nella parola Ref nel codice.