tag remove remote practices delete crear commits commands best and git git-remote

remove - git delete remotes: las referencias remotas no existen



git tags best practices (3)

En breve;

  • ¿Cómo puedo eliminar remotos remotos múltiples combinados?

Más antecedentes;

Tengo un repositorio 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 combinados.
grep origin le dice al comando que incluya el origen.
grep -v master le dice al comando que excluya master.
xargs git push origin --delete le dice al comando que elimine la lista de controles remotos.

Todos juntos, espero que esto reúna todos los controles remotos combinados y los elimine.

Cuando ejecuto el comando anterior, recibo lo siguiente para 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 ver cada uno de ellos. Muchos sitios y personas recomiendan que ejecute git fetch --prune para limpiar las referencias faltantes. Esto no hace nada porque todos estos controles remotos existen.

Entonces te pregunto, querido intercambio de fichas;

  • ¿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 estoy haciendo esto correctamente, pero obtengo los errores anteriores.


¿Se eliminan esas ramas del control remoto (origen)? En caso afirmativo, simplemente puedes hacer

git fetch --prune origin

De lo contrario, podrían regresar incluso después de eliminarlos localmente.

Actualización: Al mirar su comando nuevamente, parece que lo está compilando incorrectamente. Probablemente quieras

git push origin --delete myBranch-1234

pero en cambio estás haciendo algo como

git push origin --delete origin/myBranch-1234


Es posible que primero necesite podar su "caché" local de ramas remotas. Intenta correr:

git fetch -p origin

antes de eliminar.


Use sed para eliminar la parte ''origin /'' y cambiar una parte xargs lttile.

git branch -r --merged | grep origin | grep -v -e master | sed s/origin///// | xargs -I{} git push origin --delete {}