Question

Ne me demandez pas comment mais j'ai réussi à obtenir accidentellement les branches distantes suivantes dans un dépôt git:

$ git branch -r
  origin/HEAD -> origin/master
  origin/master
  origin/refs/heads/master

Tous pointent vers le même commit.Comment puis-je supprimer la liste inutile pour origin/refs/heads/master?

J'ai essayé de faire ce qui suit

$ git push origin :refs/heads/master
error: dst refspec refs/heads/master matches more than one.

Mais comme indiqué, cela donne une erreur.

Était-ce utile?

La solution 2

La solution était de supprimer la branche refs/heads/refs/heads/master

git push origin :refs/heads/refs/heads/master

Autres conseils

Ce n'est pas en fait une branche sur la télécommande - c'est juste une référence locale qui prétend représenter quelque chose sur la télécommande, tout comme origin / master représente la branche maître sur la télécommande.Le nom complet de la référence est refs/remotes/origin/refs/heads/master.Tout ce que vous avez à faire pour le supprimer est:

git branch -r -d origin/refs/heads/master

Il est vaguement possible que vous ayez réussi à pousser cela aussi (mais vous auriez dû faire plus d'efforts pour le faire).Si vous le faisiez, je listerais simplement les références d'origine:

git ls-remote origin

et puis, s'il y a quelque chose de stupide là-dedans, utiliser git push origin :<refname> pour s'en débarrasser.

P.S.Si cela ne le fait pas pour vous, vous allez vouloir utiliser git for-each-ref pour voir toutes vos références, et éventuellement git ls-remote origin pour voir toutes les distantes, et localiser exactement les choses qui ne sont pasn'appartiennent pas, avec leurs refnames complets.

C'est

git branch -r -d origin/ref/heads/master

au lieu de

git branch -r -d origin/refs/heads/master 

dans la partie de code pour supprimer la branche.Il y a une différence de mot de référence dans le code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top