Comment supprimer l'origine / refs / heads / master à distance
-
28-10-2019 - |
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.
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.