¿Cómo borro una rama Git local y remotamente?

Quiero borrar una rama Git local y remotamente

Intentos fallidos para eliminar la rama remota

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Eliminda remote branch origin/bugfix (was 2a14ef7).

$ git push
Todo actualizado

$ git pull
Desde github.com:gituser/gitproject
* [new branch] bugfix -> origin/bugfix
Ya actualizado

¿Qué debería hacer para de diferente para borrar remotes/origin/bugfix ambas ramas exitosamente local y remotamente?

  • git
  • git-branch
  • git-remote
7 Repuestas

Sumario ejecutivo

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Ten en cuanta que en la mayoría de los casos el nombre remoto es origin.

Borrar rama local

Para borrar la rama local usa uno de los siguientes:

$ git branch -d branch_name
$ git branch -D branch_name

Ten en cuenta: La opción -d es un alias para --delete, el solamente borra la rama si esta ha sido. También podrías usar -D, el cual es un alias para --delete --force, el cual borra la rama "independientemente de su estado fusionado." [Fuente git-branch]

Borrar rama remota [Actualizada el 8-Sep-2017]

Con esto Git v1.7.0, puedes borrar una rama remota usando:

$ git push <remote_name> --delete <branch_name>

La cual podría ser más fácil de recordar que

$ git push <remote_name> :<branch_name>

la cual fue agregada en Git v1.5.0 "para borrar una rama remota o una etiqueta".

Comenzando en Git v2.8.0 también puedes usar git push con la -d opción como alias para --delete.

Por lo tanto, la versión de Git que hayas instalado determinará si necesitas usar la sintaxis más fácil o más difícil.

Borrar la rama remota [Respuesta original del 5-enero-2010]

Desde el capitulo 3 de Pro Git de Scott Chacon:

Borrar ramas remotas

Supongamos que has terminado con una rama remota — dirás que tu y tus colaboradores terminaron una característica y que la han fusionado en tu rama remota maestra (o cualquiera que sea la rama en la que se encuentre tu línea de código estable). Puedes eliminar una rama remota usando una sintaxis bastante obtusa git push [remotename] :[branch]. Si deseas eliminar tu rama de reparación de servidor desde el servidor, tienes que ejecutar lo siguiente:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
- [deleted]	serverfix

Boom. No hay mas ramas en tu servidor. Tendrás que prestar atención ya que necesitarás ese comando, y probablemente olvides la sintaxis. Una forma de recordar este comando es recordando lo siguiente git push [remotename] [localbranch]:[remotebranch] la sintaxis que hicimos anteriormente Si dejas las porción de [localbranch] entonces básicamente estás diciendo, "No tomes nada de mi lado y hazlo funcionar [remotebranch]”.

Ya emití git push origin :bugfix y funcionó perfectamente. Scott Chacon tenía razón -- Voy a querer que g ear do esta pagina (o virtualmente prestar atención contestando esto en Stack Overflow).

git fetch --all --prune

para propagar los cambios.

La respuesta de Matthew está muy bien para borrar ramas remotas y también agradezco la explicación pero para hacer una simple distinción entre los dos comandos:

Para remover una rama local de tu maquina:

git branch -d {the_local_branch} (usa -D en vez de forzar el borrado de la rama sin verificar el estado fusionado)

Para remover una rama remota desde el servidor:

git push origin --delete {the_remote_branch}

Referencia: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

Respuestas cortas

Si quieres explicaciones más detalladas de los siguientes comandos entonces mira las respuestas largas en la siguiente sección.

Borrar una rama remota:

git push origin --delete <branch>  # Git versión 1.7.0 o más reciente
git push origin :<branch>          # Git versiones anteriores a 1.7.0

Borrar una rama local:

git branch --delete <branch>
git branch -d <branch> # Versión más corta
git branch -D <branch> # Forzar eliminar ramas no fusionadas

Eliminar una rama local de seguimiento remoto:

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Más corta

git fetch <remote> --prune # Eliminar múltiples ramas de seguimiento obsoletas
git fetch <remote> -p      # Más corta

Respuesta larga: ¡Hay 3 ramas diferentes para borrar!

Cuando estas lidiando con el borrado de las ramas tanto locales como remotas ten en mente que hay involucradas 3 ramas diferentes:

  1. La rama x local.
  2. La rama x remota original
  3. La rama local de seguimiento remoto origin/X que rastrea la rama remota X.

El cartel original utilizado

git branch -rd origin/bugfix

el cual solo eliminó su rama local de seguimiento remoto origin/bugfix, y no la rama remota real bugfix on origin.

Para eliminar esa rama remota real, necesitas

git push origin --delete bugfix

Detalles Adicionales

La siguiente sección describe detalles adicionales para considerar cuando borres tus ramas remotas y las de seguimiento.

Al pulsar eliminar las ramas remotas también se eliminan las ramas de seguimiento remoto

Ten en cuenta que al borrar una rama remota X desde la línea de comando usando un git push también borrará la rama local de seguimiento origin/X por lo que no es necesario podar la rama obsoleta remota de seguimiento con dolor so lo hiciste de todos modos git fetch --prune o traer git -p aunque no lo haría.

Puedes verificar que la rama remota de seguimiento siguiendo:

# View just remote-tracking branches
git branch --remotes
git branch -r

# Ver tanto las sucursales estrictamente locales como las de seguimiento remoto.
git branch --all
git branch -a

Podar el origen de la rama de seguimiento remoto local obsoleto origin/X

Si no eliminaste tu rama remota X desde la línea de comando (como arriba), entonces tu repo local aun contendrán (ahora una obsoleta) rama remota de seguimiento origin/X. Esto puede ocurrir si eliminaste una rama remota a través de la interface web GitHub, por ejemplo.

Una forma típica de eliminar estas ramas remotas obsoletas (desde la versión Git 1.6.6) es simplemente ejecutando git fetch con el --podar o inferior -p. Ten en cuanta que si eliminas todas las locales ramas de seguimiento remotos por cualquier rama que ya no existe más en lo remoto:

git fetch origin --prune
git fetch origin -p # Más corta

Aquí hay una cuota relevante desde 1.6.6 release notes (énfasis mío):

"git fetch" aprendido --all y --multiple opciones, para ejecutar fetch desde muchos repositorios, y --prune opción para eliminar las ramas de seguimiento remoto que quedaron obsoletas. Esto hace "una actualización del git remoto" y "una poda remota" menos necesaria (no hay un plan para eliminar "una actualización remota" tampoco "una poda remota").

Alternativa a la poda automática anterior para las ramas de seguimiento remoto obsoletas

Alternativamente, en lugar de podar tus ramas obsoletas de seguimiento remoto a través de git fetch -p, puedes evitar hacer una operación extra de red con solo remover manualmente las rama(s) con --remote o -r flags:

git branch --delete --remotes origin/X
git branch -dr origin/X # Más corta

Mira también

user456814

Pasos para borrar ramas:

Borrar ramas remotas:

git push origin --delete <your_branch>

Tienes tres formas de borrar una rama local:

  1. git branch -D <branch_name>
  2. git branch --delete --force <branch_name> // igual que -D
  3. git branch --delete <branch_name> // error al descomprimir

Explica: Ok, solo explica que ocurre aquí!

Simpleme haz: git push origin --delete para borrar solamente tu rama remota, agrega el nombre de la rama al final y esto eliminará y lo empujará de forma remota al mismo tiempo...

También git branch -D el cual simplemente borrará la rama local SOLAMENTE!...

-D significa --delete --force la cual borrara la rama incluso si no esta fusionada (forzar borrado), sin embargo también puedes usar -d la cual significa --delete la cual muestra un respectivo error de la rama del estado fusionado.

También he creado la imagen de abajo que muestra los pasos:

Tambien puedesusar lo siguiente para borrar una rama remota.

git push --delete origin serverfix

La cual hace la mismo que

git push origin :serverfix

pero esto podría ser mas fácil de recordar.

Consejo: Cuando borrarse ramas usando

git branch -d <branchname> # eliminar rama local

o

git push origin :<branchname> # eliminar rama remota

Solo las referencias son borradas. A pesar de que la rama se elimina realmente en lo remoto, las referencias aún existen en los repositorios locales de los miembros de tu equipo. Esto significa que para otros miembros del equipo las ramas eliminadas todavía son visibles cuando hacen un git branch -a.

Para solucionar esto los miembros del equipo pueden podar las ramas eliminadas con

git remote prune <repositorio>

Esto típicamente es git remote prune <repositorio>

Si quieres eliminar una rama, primero verifica que no se otra que la que quieres eliminar.

git checkout otro_rama

Borrar la rama local

git branch -D rama_a_eliminar

Borrar la rama remota:

git push origin --delete rama_a_eliminar