2010-10-22 12 views

Respuesta

35

Si lleva a cabo algo así como

git branch -d -r remote_name/branch_name 

sólo se quita el pago y envío local. Este comando no hace nada al repositorio remoto, por lo que aún aparece.

Solución:

git push origin :branch_name 

eliminará el la rama remota (nota de la ':'), y

git branch -d branch_name 

eliminará el proceso de pago local.

(Reference)

+131

También puede ejecutar 'git remote prune origin' para limpiar sus referencias remotas. – cmcginty

+3

Eso eliminará todas las ramas que ya no sean rastreadas por el repositorio remoto. Entonces, solo ten cuidado –

+4

Creo que también es útil saber que, aunque es un poco más detallado, puede usar 'git push --delete ' para eliminar ramas remotas, también. – AeroCross

2

Puede combinar los indicadores -r y -d para eliminar ramas remotas.

+0

gran consejo! sin embargo, en este caso, hay varias ramas que ya fueron eliminadas, seguramente hay un comando para obtener estas actualizaciones –

263

Si se tratara de sucursales en repositorio remoto que se borraron, y se desea actualizar todas las ramas de seguimiento remoto local a la vez, puede utilizar

$ git remote prune <remotename> 

para eliminar todas las ramas obsoletas de seguimiento remoto para un control remoto dado (es decir, aquellas que siguen ramas que fueron eliminadas en el repositorio remoto).

Consulte la documentación de git remote.

+0

¡Gracias @Casey y @Jakub por sus respuestas! ¿Cómo es que la información de la sucursal remota almacenada localmente no se actualiza la próxima vez que uso 'git fetch'? – JJD

+3

@JJD: porque es posible que haya basado su trabajo en la sucursal remota que ya no está aquí. Desaparecer sin solicitar se consideró una mala idea. Es por eso que necesita podar explícitamente las ramas de seguimiento remoto. –

+0

¿"git gc" también limpia ramas remotas viciadas? –

163
git remote update --prune 

Debe actualizar todas las sucursales de los controles remotos, agregar nuevas y borrar las eliminadas.

Editar: El comando remote update básicamente recupera la lista de ramas en el control remoto. La opción --prune eliminará sus ramas de seguimiento remoto local que apuntan a las sucursales que ya no existen en el control remoto.

+0

Esto funcionó para mí. Necesitaba eliminar una rama remota que por alguna razón no pudo ser eliminada por el origen de 'git push' habitual: ' – n0denine

+0

¿Sería correcto decir que esta respuesta hace lo que hace la respuesta de Jakub Narębski y más? Es decir, pasa y obtiene actualizaciones. –

13

también útil para ver nuevas sucursales remotas:

git fetch --all 
+0

Esto me ayudó mucho. Algunos errores en Visual Studio Git previenen mostrar las nuevas ramas creadas después de la clonación. Este comando ayuda a mostrar las nuevas ramas –

+0

nice n simple thx dude, tiene una insignia de respuesta de bronce en la casa :) – danday74

Cuestiones relacionadas