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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top