En bref;
- Comment puis-je supprimer plusieurs télécommandes fusionnées à distance?
Plus de fond;
J'ai un git repo avec des dizaines de télécommandes qui ont été fusionnées dans master. Je peux supprimer ces télécommandes une par une en utilisant:
git push --delete origin myBranch-1234
Cependant, il s'agit d'un processus lent et fastidieux pour toutes les télécommandes. J'essaye donc cette commande:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
répertorie toutes les télécommandes fusionnées.
grep origin
indique à la commande d'inclure l'origine.
grep -v master
indique à la commande d'exclure le maître.
xargs git push origin --delete
indique à la commande de supprimer la liste des télécommandes.
Dans l'ensemble, je m'attends à ce que cela rassemble toutes les télécommandes fusionnées et les supprime.
Lorsque j'exécute la commande ci-dessus, je reçois ce qui suit pour chaque télécommande fusionnée;
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
Cependant, ces télécommandes existent et je peux vérifier chacune d'elles. De nombreux sites et personnes recommandent que je cours git fetch --prune
pour nettoyer les références manquantes. Cela ne fait rien car toutes ces télécommandes existent.
Alors je vous demande, cher échange de pile;
- Pourquoi puis-je supprimer une télécommande, mais pas plusieurs?
- Ma commande est-elle correcte?
Je pense qu'il me manque quelque chose de petit. Chaque fois que je recherche cela, il semble que je le fais correctement, mais j'obtiens les erreurs ci-dessus.
--prune
? À mon avis, c'est assez trompeur