Comment supprimer la référence git `refs / original / refs / heads / master`?


35

Qu'est-ce que c'est dans la boîte ronde jaune?

capture d'écran

J'ai essayé git branch -D, git tag -dmais aucun n'a réussi. Alors comment le supprimer?


1
Veuillez envisager de remplacer la réponse acceptée par la réponse d' Alexey Ten, qui est très appréciée et correcte ( git update-ref -d).
— Jonathon Reinhart

Réponses:


11

Il ressemble à une balise, donc la commande suivante devrait fonctionner:

git tag -d refs/original/refs/heads/master

Mais comme vous ne l'avez pas dit, vous pouvez simplement supprimer le fichier du .gitrépertoire. Depuis la racine du référentiel, une commande comme celle-ci l'obtiendra:

rm .git/refs/tags/refs/original/refs/heads/master

Le chemin peut être légèrement différent en cas d' git-tagéchec de la commande, vous pouvez donc vouloir cd .git/refsrechercher la tête incriminée par essais et erreurs. La suppression du fichier supprimera la référence de votre référentiel local.


2
Ce n'est pas un tag, cependant, je l'ai trouvé comme .git/refs/original/refs/heads/master.
— Xiè Jìléi

1
Utilisez git update-refplutôt que de muter manuellement les internes de Git. Voir la réponse d'Alexey.
— wchargin

100

Cette commande devrait fonctionner

git update-ref -d refs/original/refs/heads/master

Cela a fonctionné pour moi avec le même problème. Notez que la référence a été stockée dans un fichier appelé .git / packed-refs. Si vous l'ouvrez, vous pouvez voir la ligne avec le SHA et la chaîne "refs / original / refs / heads / master". Vous pourriez probablement supprimer cette ligne, mais j'utiliserais cette commande pour être sûr.
— Matt N

14
+1: Vous devez toujours utiliser git update-ref -dau lieu de simplement rmfaire référence - de mauvaises choses peuvent se produire autrement.
— Callum Rogers du

3
Cela devrait être la réponse acceptée
— Daniel Alder

1
@CallumRogers pourquoi?
— wahnfrieden

6
@wahnfrieden car git pourrait utiliser des refs compressés et il n'y aura pas de fichier correspondant dans le refsrépertoire
— Alexey Ten

17

Ceci est une réf. Normalement créé par git filter-branch- c'est un pointeur vers l'endroit où se trouvait votre branche avant de s'exécuter git filter-branch.

Et pour supprimer toute référence, vous ne pouvez toujours rien y pousser dans le référentiel local:

git push . :refs/original/refs/heads/master

Les autres réponses couvraient également assez bien d'autres façons de supprimer.


1
"Ne rien pousser" pour supprimer la référence localement est très intelligent.
— 40XUserNotFound

J'ai fait ma journée. J'avais une référence à une balise distante que la télécommande n'existait plus. C'est la seule commande qui a fonctionné.
— RW4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.