En breve;
- ¿Cómo puedo eliminar múltiples controles remotos fusionados?
Más antecedentes;
Tengo un repositorio de git con decenas de controles remotos que se han fusionado en master. Puedo eliminar estos controles remotos uno a la vez usando:
git push --delete origin myBranch-1234
Sin embargo, este es un proceso lento y tedioso para todos los controles remotos. Entonces estoy probando este comando:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
enumera todos los controles remotos fusionados.
grep origin
le dice al comando que incluya el origen.
grep -v master
le dice al comando que excluya al maestro.
xargs git push origin --delete
le dice al comando que elimine la lista de controles remotos.
En conjunto, espero que esto reúna todos los controles remotos fusionados y los elimine.
Cuando ejecuto el comando anterior, recibo lo siguiente por cada control remoto combinado;
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
Sin embargo, estos controles remotos existen y puedo verificar cada uno de ellos. Muchos sitios y personas recomiendan que corra git fetch --prune
para limpiar las referencias faltantes. Esto no hace nada porque existen todos estos controles remotos.
Así que te pregunto, querido intercambio de pilas;
- ¿Por qué puedo eliminar un control remoto, pero no muchos?
- ¿Es correcto mi comando?
Creo que me falta algo pequeño. Cada vez que investigo esto, parece que lo estoy haciendo correctamente, pero recibo los errores anteriores.
--prune
? En mi opinión, eso es bastante engañoso