Supprimer les anciennes twigs distantes de Git

Quand j’utilise autocompletion de bash dans Git, cela me montre toujours des twigs de vieilles télécommandes que je n’ai plus. Lorsque je fais une git branch -la cela montre les anciennes télécommandes et twigs alors qu’une git branch -l ne le fera pas. Un ls .git/refs/remotes/ montre aussi. Cependant, ils ne sont pas présents dans mon fichier .git / config et ils ne sont pas non plus affichés lorsque je lance git remote show .

Alors comment puis-je m’en débarrasser car ma liste de saisie semi-automatique est trop longue en ce moment.

J’ai déjà essayé:

 git reflog expire --expire=now --all git gc --prune=now rm .git/refs/remotes/theoldremote git remote prune theoldremote 

Je suis également conscient du fait que je peux simplement re-cloner le repo mais c’est de la sortingche 😉

Git ne supprime pas automatiquement les twigs de suivi à distance (locales) si la twig a été supprimée dans le référentiel distant. De plus, avant la version 2.0.1, les twigs de suivi à distance n’étaient dans certains cas pas supprimées lorsque vous supprimiez la télécommande de votre configuration git (voir la réponse de VonC).

Pour supprimer des twigs obsolètes de suivi à distance (twigs qui ont été supprimées dans le référentiel distant) de l’un de vos référentiels distants, exécutez

 git remote prune  

Pour citer la page de manuel ou la git remote :

prune

Supprime toutes les twigs de suivi obsolètes sous . Ces twigs obsolètes ont déjà été supprimées du référentiel distant référencé par , mais sont toujours disponibles localement dans “remotes / “.

Avec l’option –dry-run, indiquez quelles twigs seront élaguées, mais ne les élagerez pas.

Cependant, d’après votre question, il semble que vous ayez supprimé manuellement .git/refs/remotes/theoldremote , de sorte que Git ne connaisse plus le référentiel distant auquel appartiennent les twigs de suivi à distance. Ce n’est pas comme ça que tu es censé le faire.

La façon normale de supprimer un référentiel distant est d’exécuter

 git remote rm  

Cela supprimera la télécommande de votre .git/config et supprimera les twigs de suivi à distance.

Si vous supprimez simplement le répertoire sous .git/refs/remotes/ , les twigs restront derrière. Ensuite, vous devrez les supprimer manuellement:

 git branch -rd / 

Vous avez besoin de l’option -r pour supprimer une twig distante.

j’utilise

 git push origin :remote_branch 

supprimer une twig du serveur.

 git remote prune origin 

supprimer les références distantes qui n’existent plus sur le serveur

Remarque: alors que git remote prune est la solution, sachez que, à partir de git 2.0.1 (25 juin 2014), une git remote rm commence par supprimer les twigs de suivi à distance .
Donc, heureusement, on ne devrait pas avoir à nettoyer les anciennes twigs après un git remote rm .

Voir commit b07bdd3 par Jens Lindström ( jensl )

remote rm : supprime la configuration distante en dernier

Lorsque vous retirez une télécommande, supprimez les twigs de suivi à distance avant de supprimer la configuration à distance.
De cette manière, si l’opération échoue ou est abandonnée lors de la suppression des twigs de suivi à distance, la commande peut être réexécutée pour terminer l’opération .

Ne rien envoyer à une twig pour le supprimer:

git push remote :remote_branch

C’est quelque part dans les docs mais ce n’est pas vraiment évident.

Ou ai-je mal compris votre question?

Ok je l’ai Le problème était que les télécommandes n’existaient plus, mais quelque part dans la firebase database git. J’ai rajouté les télécommandes, puis fait

 git remote prune theremote git remote rm theremote git gc --prune=now 

Après cela, ils disparaissent de la liste. D’une certaine manière, je ne les ai pas supprimés correctement avant que je devine.