Las respuestas cortas
Si desea explicaciones más detalladas de los siguientes comandos, consulte las respuestas largas en la siguiente sección.
Eliminar una rama remota
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Eliminar una sucursal local
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Eliminar una rama local de seguimiento remoto
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
La respuesta larga : ¡hay tres ramas diferentes para eliminar!
Cuando se trata de eliminar ramas tanto local como remotamente, tenga en cuenta que hay tres ramas diferentes involucradas :
- La sucursal local
X
.
- La rama de origen remoto
X
.
- La rama local de seguimiento remoto
origin/X
que rastrea la rama remota X
.
El póster original utilizado:
git branch -rd origin/bugfix
Que solo eliminó su rama local de seguimiento remoto origin/bugfix
, y no la rama remota real bugfix
en origin
.
Para eliminar esa rama remota real , necesita
git push origin --delete bugfix
Detalles adicionales
Las siguientes secciones describen detalles adicionales a tener en cuenta al eliminar sus sucursales remotas y de seguimiento remoto.
Presionar para eliminar ramas remotas también elimina las ramas de seguimiento remoto
Tenga en cuenta que al eliminar la rama remota X
de la línea de comando utilizando a git push
también se eliminará la rama local de seguimiento remoto origin/X
, por lo que no es necesario podar la rama obsoleta de seguimiento remoto con git fetch --prune
o git fetch -p
. Sin embargo, no dolería si lo hicieras de todos modos.
Puede verificar que la rama de seguimiento remoto origin/X
también se eliminó ejecutando lo siguiente:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Poda de la rama obsoleta local de seguimiento remoto origen / X
Si no eliminó su rama remota X
de la línea de comando (como arriba), entonces su repositorio local todavía contendrá (una rama obsoleta) de seguimiento remotoorigin/X
. Esto puede suceder si eliminó una rama remota directamente a través de la interfaz web de GitHub, por ejemplo.
Una forma típica de eliminar estas ramas obsoletas de seguimiento remoto (desde la versión 1.6.6 de Git) es simplemente ejecutar git fetch
con --prune
o más corto -p
. Tenga en cuenta que esto elimina todas las ramas obsoletas de seguimiento remoto locales para cualquier rama remota que ya no exista en el control remoto :
git fetch origin --prune
git fetch origin -p # Shorter
Aquí está la cita relevante de las notas de la versión 1.6.6 (énfasis mío):
"git fetch" aprendido --all
y --multiple
opciones, para ejecutar fetch desde muchos repositorios, y la --prune
opción de eliminar ramas de seguimiento remotas que quedaron obsoletas. Esto hace que la "actualización remota de git" y la "poda remota de git" sean menos necesarias (sin embargo, no hay ningún plan para eliminar la "actualización remota" ni la "poda remota").
Alternativa a la poda automática anterior para ramas de seguimiento remoto obsoletas
Alternativamente, en lugar de podar sus ramas locales de seguimiento remoto obsoletas git fetch -p
, puede evitar realizar la operación de red adicional simplemente eliminando manualmente las ramas con las banderas --remote
o -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Ver también