Em resumo;
- Como posso excluir vários controles remotos mesclados?
Mais informações;
Eu tenho um repositório git com dezenas de remotos que foram mesclados no master. Posso excluir esses controles remotos um de cada vez usando:
git push --delete origin myBranch-1234
No entanto, este é um processo lento e tedioso para todos os controles remotos. Então, estou tentando este comando:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
lista todos os controles remotos mesclados.
grep origin
diz ao comando para incluir a origem.
grep -v master
diz ao comando para excluir o mestre.
xargs git push origin --delete
diz ao comando para excluir a lista de controles remotos.
Todos juntos, espero que isso reúna todos os controles remotos mesclados e os exclua.
Quando executo o comando acima, recebo o seguinte para cada controle remoto mesclado;
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
No entanto, esses controles remotos existem e posso verificar cada um deles. Muitos sites e pessoas recomendam que eu corra git fetch --prune
para limpar as referências ausentes. Isso não faz nada porque todos esses controles remotos existem.
Então eu pergunto a você, querida troca de pilha;
- Por que posso excluir um controle remoto, mas não muitos?
- Meu comando está correto?
Acho que estou perdendo algo pequeno. Cada vez que pesquiso isso, parece que estou fazendo corretamente, mas estou recebendo os erros acima.
--prune
? Na minha opinião, isso é muito enganador