J'ai un repo git avec des dizaines de télécommandes qui ont été fusionnées en master. Je peux supprimer ces télécommandes une à la fois en utilisant:
git Push --delete Origin myBranch-1234
Cependant, il s’agit d’un processus lent et fastidieux pour toutes les télécommandes. Alors j'essaie 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, j’espère que cela regroupera toutes les télécommandes fusionnées et les supprimera.
Lorsque j'exécute la commande ci-dessus, je reçois le message suivant 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 les commander toutes les deux. De nombreux sites et personnes recommandent que j'exécute git fetch --Prune
Pour nettoyer les références manquantes. Cela ne fait rien car toutes ces télécommandes existent.
Je pense que je manque quelque chose de petit. Chaque fois que je fais des recherches, il semble que je le fasse correctement, mais je reçois les erreurs ci-dessus.
Vous devrez peut-être d'abord élaguer votre "cache" local des branches distantes. Essayez de courir:
git fetch -p Origin
avant de supprimer.
Ces branches sont-elles supprimées de la télécommande (Origin)? Si oui, vous pouvez simplement faire
git fetch --Prune Origin
Sinon, ils risquent de revenir même après les avoir supprimés localement.
Mise à jour: Si vous regardez à nouveau votre commande, il semble que vous ne la construisez pas correctement. Vous voulez probablement
git Push Origin --delete myBranch-1234
mais au lieu de cela, vous faites quelque chose comme
git Push Origin --delete Origin/myBranch-1234
Utilisez sed
pour supprimer la partie 'Origine /' et changer un lttile xargs
.
git branch -r --merged | grep Origin | grep -v -e master | sed s/Origin\\/// | xargs -I{} git Push Origin --delete {}