Cómo eliminar una rama en Git de forma local y remota

Una de las características más fuertes de Git son sus ramas ligeras. Le permiten trabajar en etapas paralelas de desarrollo de manera eficiente. Un desarrollador podría incluso crear ramas individuales para errores separados. Tanto en tiempo como en espacio, las sucursales son casi gratuitas.

Muchos flujos de trabajo de git tratan con ramas temporales y a largo plazo. Por lo tanto, a menudo es necesario eliminar ramas durante el desarrollo. Ocasionalmente existe la necesidad de eliminar ramas compartidas, desde un servidor remoto, así como ramas locales.

¿Por qué eliminar una rama?

En primer lugar, si todavía está familiarizándose con git , es muy probable que cree una rama y luego decida que no es necesario. O puede que esté experimentando con ramas y quiera limpiar después de usted mismo. Esto está bien, ya que la ramificación en git es una operación ligera. Es muy rápido y utiliza el espacio en disco de manera eficiente.

Como resultado, muchos flujos de trabajo de desarrollo de git fomentan la ramificación, incluso para tareas muy pequeñas o cortas. Por ejemplo, una estrategia común es crear una rama para corregir un error. Esto es cierto incluso si se trata de un solo autor que realiza un cambio de una línea en un solo archivo.

Por estos motivos, la creación y eliminación de ramas son operaciones que deben comprenderse bien. Es posible que a menudo elimine ramas durante un flujo de trabajo de desarrollo típico.

Un repositorio de muestra con sucursales

Los siguientes ejemplos hacen referencia a un repositorio de muestra con la siguiente estructura:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

Tenga en cuenta que cada rama local tiene una rama ascendente correspondiente desde el origen remoto.

Eliminar una rama mediante la línea de comandos

La sintaxis de comando básica para eliminar una rama es:

 git branch (-d | -D) [-r] <branchname>...

La forma más simple del comando elimina una rama local, siempre que todos sus cambios se hayan combinado:

 $ git branch -d dev

No puede eliminar la rama que está actualmente activa; si intenta hacerlo, recibirá un mensaje como este:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Cuando todo vaya bien, verá un mensaje de confirmación:

 Deleted branch dev (was 1ae41e8).

Si elimina una rama que solo existe localmente, con cambios no fusionados, perderá esos cambios. Por lo tanto, git se negará a eliminar una rama en tal situación, de forma predeterminada:

 error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

Como informa el mensaje de error, puede forzar la eliminación con el indicador -D . Sin embargo, git le permitirá eliminar una rama local no fusionada si existe de forma remota:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

Eliminar una rama remota es bastante diferente. Utilizará el comando git push junto con la marca -d para eliminar. Después de eso, proporcione el nombre del control remoto (a menudo origen ) y el nombre de la sucursal:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

Eliminar ramas locales y remotas con GitHub Desktop

A diferencia del programa git de línea de comandos, la aplicación de escritorio de GitHub solo le permitirá eliminar la rama activa. Puede realizar esta acción a través del menú Sucursal , seleccionando la opción Eliminar y confirmándola:

GitHub Desktop no le permitirá eliminar la rama predeterminada, por ejemplo, main, aunque git lo admita. Si la rama predeterminada es la que está actualmente activa, la aplicación deshabilita la acción del menú.

Si la rama también representa una rama remota, GitHub Desktop ofrece la opción de eliminarla también del control remoto:

Eliminando ramas usando GitKraken

GitKraken muestra las ramas locales y remotas de su repositorio en la barra lateral izquierda. Debe eliminar cada uno por separado .

Desplácese sobre el nombre de la rama correspondiente y haga clic en el menú Acciones de la rama , que parece tres puntos verticales. En el menú, seleccione Eliminar <nombre de la sucursal> :

Verá un mensaje de confirmación que le informa que se trata de una operación destructiva. Puede confirmar que desea continuar con el botón Eliminar :

Reflejando el comportamiento predeterminado del programa de línea de comandos git, primero debe cambiar a una rama distinta a la que está eliminando . De lo contrario, verá un mensaje de error:

Eliminación de sucursales locales y remotas mediante Tower

Eliminar una rama con Tower es muy similar a eliminar una rama con GitKraken. Las ramas locales y remotas se muestran en un panel en el lado izquierdo. Haga clic con el botón derecho en cualquier rama y seleccione la opción Eliminar del menú contextual:

Una diferencia clave es que una sucursal remota se puede eliminar junto con su sucursal local, durante la confirmación:

Eliminar una rama en GitHub

GitHub solo actúa como una fuente remota, por lo que las ramas allí son remotas de forma predeterminada. Si elimina una rama usando el sitio web de GitHub, tendrá que eliminar la rama local correspondiente usando uno de los otros métodos aquí.

Al igual que con la aplicación de escritorio GitHub, el sitio web de GitHub no le permitirá eliminar la rama predeterminada. La opción simplemente no aparece. Sin embargo, eliminar una rama es sencillo. Desde la página de Código del repositorio, haga clic en el enlace de las ramas , ubique la rama que desee eliminar y luego haga clic en el icono Eliminar esta rama , que parece una papelera:

Tenga en cuenta que no hay comprobaciones de cambios no fusionados, por lo que en GitHub, la rama simplemente se eliminará de inmediato. Sin embargo, dado que siempre representará una rama remota, este debería ser el comportamiento que espera.

Tenga en cuenta que, después de eliminar, verá un botón para restaurar la rama. Sin embargo, esta es simplemente una función útil para deshacer, en caso de que haga clic accidentalmente en el icono de eliminar. No confíe en él, porque tan pronto como actualice o navegue fuera de la página, ¡perderá la opción!

Eliminar ramas locales y remotas en Bitbucket

Bitbucket, como GitHub, no le permitirá eliminar la rama predeterminada. Bitbucket llama a esto la rama principal en la configuración del repositorio . Puede eliminar cualquier otra rama listada en la pestaña Ramas , a través de su menú Acciones correspondiente:

También puede eliminar más de una rama a la vez si está realizando una gran operación de limpieza:

Eliminar ramas es parte de un flujo de trabajo típico de Git

Las ramas de Git pueden complicar su flujo de trabajo, especialmente uno con ramas locales, remotas y de seguimiento. Pero para el desarrollo simple del día a día, es probable que esté creando y eliminando sucursales locales todo el tiempo. Este es un aspecto central de un flujo de trabajo típico de git al que debería acostumbrarse.