Git es una forma fantástica de implementar el control de versiones a un proyecto de codificación; tan fantástica, de hecho, que es casi la opción obligatoria.
La idea es crear ramas duplicadas de tu repositorio principal, trabajar en el código y luego fusionar los cambios de nuevo con el resto. Esto significa que tendrás un montón de ramas antiguas dentro de tu repositorio. Aunque el tamaño de estos archivos suele ser pequeño, querrás hacer un git delete
en una rama local para mantener las cosas ordenadas.
La buena noticia es que no requiere mucho esfuerzo. Sin embargo, tendrás que considerar el mejor enfoque en función de si fusionas los cambios, así como qué hacer si se produce un error durante el proceso de eliminación. Incluso puede que necesites restaurar una rama que hayas borrado. Cada uno de estos escenarios requiere habilidades y comandos diferentes.
En este tutorial, te mostraremos cómo llevar a cabo un git delete en una rama local. Primero, sin embargo, vamos a hablar de algunas de las razones por las que podrías querer borrar ramas locales en Git.
¿Qué es una Rama de Git?
Los repositorios de Git son una colección de ramas, es decir, duplicados del núcleo del código que contienen. De hecho, no puedes tener un repositorio Git funcional sin una rama.
A menudo, tendrás un repositorio principal (los nombres nominales son «main» y «trunk»). Este contendrá código de producción en funcionamiento que no querrás editar. En su lugar, crearás una rama duplicada del repositorio principal, y luego realizarás los cambios que necesites dentro de tu rama. Cuando llegue el momento de devolver esos cambios al código principal, los comprobarás y los fusionarás.
Las ramas permiten a todos los miembros de un equipo colaborar en el mismo proyecto, independientemente unos de otros. Tampoco existe peligro de hacer un cambio en el código de trabajo o de estropear otros cambios mientras tanto.
Sin embargo, también necesitarás hacer un git delete
en una rama local. Esta será una acción habitual para ti, y hay varias razones sólidas para hacerlo.
¿Por Qué Hay que Eliminar Ramas en Git?
Tu código de producción estará en la rama principal. Es la única rama que tiene cierta estabilidad.
En cambio, casi todas las demás ramas que crees tendrán una vida temporal. Una vez que completes tu trabajo, confirmarás los cambios, y luego buscarás fusionarlos con la rama principal, posiblemente en un repositorio online como GitHub.
Esto significa que a menudo tendrás muchas ramas abiertas a la vez, dependiendo del proyecto y del equipo. Sin embargo, una vez que finalizas la fusión, esas ramas no desaparecen.
Por ello, hay algunas razones por las que querrías eliminar una rama local de Git:
- Limpieza general: En casa, cuando terminas de cocinar, lavas los utensilios y los guardas. Lo mismo ocurre cuando trabajas con un repositorio Git: Cuando termines tu trabajo, fusionarás los cambios y eliminarás las ramas que ya no necesites. Esto también hace que tu proyecto y tu repositorio sean más fáciles de navegar.
- Tamaño del archivo del repositorio: Aunque los repositorios de Git suelen ser lo suficientemente pequeños como para no tener consecuencias en el tamaño de un proyecto, debes vigilarlo. Una forma de reducir el tamaño de un repositorio es eliminar las ramas que no necesites.
- Rendimiento potencial: Aunque tu código principal tenga un buen rendimiento, puede que una rama no lo tenga, dado que estás trabajando en ella. Por ello, querrás mantener las ramas abiertas al mínimo. De lo contrario, podría introducir un rendimiento deficiente para tu equipo hasta que escenifiques y ajustes un proyecto.
Como verás más adelante, hacer un git delete
en una rama local es sencillo, en su mayor parte. Sin embargo, es una buena idea entender lo que ocurre bajo el capó cuando se trata de utilizar este comando, ya que no borrará todo lo relacionado con la rama de tu repositorio.
¿Qué Ocurre cuando Eliminas una Rama Local de Git?
A nivel técnico, una rama es sólo un puntero a una confirmación específica: una sección de código que quieres incluir en tu rama principal. Por ello, cuando elimines una rama local de Git, los commits seguirán existiendo.
Más adelante, hablaremos de la recuperación de ramas, y de lo que es posible gracias a esos commits que permanecen en tu repositorio. Por ahora, tienes que saber que hay dos tipos diferentes de cambios:
- Cambios fusionados: Una vez que fusiones una rama con la principal, el código estará lo más actualizado posible. En términos técnicos, esto equivale a mover la referencia de la rama principal para que se ponga al día con tu rama secundaria.
- Cambios no fusionados: Si no fusionas los cambios, tendrás una rama que no estará tan actualizada como la rama principal. Por tanto, la rama principal no tendrá una confirmación de referencia actualizada.
De esto hablaremos con más detalle más adelante. En cualquier caso, plantea otro buen punto sobre cuándo eliminar ramas.
Cuándo hacer un «Git Delete» en una rama local
Dados los peligros de eliminar una rama con cambios no fusionados, es importante no ejecutar un git delete
en una rama local hasta que realices una fusión de código. Esto garantizará que cada rama tenga una referencia actualizada y, por extensión, el código más actual disponible.
También es una buena idea asegurarte de que no vas a necesitar ninguno de los commits de una rama temporal antes de realizar una git delete
. Aunque puedes recuperar ramas hasta cierto punto, es un trabajo que no querrás realizar cuando sea necesario. Te lo explicaremos más adelante.
Cómo Hacer un «Git Delete» en una Rama Local
A lo largo del resto de este tutorial, te mostraremos cómo hacer un git delete
en una rama local. También hablaremos de qué hacer con los cambios no fusionados.
A partir de ahí, hablaremos de los errores que puedes ver, y luego de cómo restaurar una rama local eliminada.
Al final, echaremos un breve vistazo a las ramas remotas y a cómo eliminarlas también.
Requisitos previos
Git en sí mismo ofrece un conjunto sencillo de comandos y te da mucho poder sin necesidad de abrir un libro de texto. Aún así, hay algunas formas diferentes de acceder a un repositorio Git dependiendo de la aplicación y el editor de código que elijas.
Aunque podrías encontrar una configuración de «mínimos clics» dentro de una interfaz gráfica de usuario (GUI) dedicada, como GitKraken o Sublime Merge, vamos a simplificar las cosas y utilizar herramientas integradas en el sistema operativo.
Para seguir adelante, necesitarás lo siguiente:
- Acceso a la línea de comandos: Nuestros ejemplos utilizarán macOS e iTerm. Sin embargo, puedes utilizar Cmder para Windows, el Terminal por defecto en macOS, lo mismo en Linux, y otros.
- Acceso a tus archivos específicos: Querrás tener los archivos de tu proyecto en tu ordenador local, porque sin ellos, ¡no hay nada que puedas hacer!
- Conocimiento de la línea de comandos: Te ayudará tener algunos conocimientos de la línea de comandos, concretamente, los comandos que te ayudarán a navegar por tus archivos, junto con cierta comprensión de cómo funciona la línea de comandos.
En realidad, si tienes un proyecto con un repositorio Git y una ventana de Terminal de tu elección, esto es todo lo que necesitas.
Cómo hacer un «Git Delete» básico
En primer lugar, supondremos que quieres eliminar una rama con cambios fusionados. Esta es la práctica más sencilla y típica.
Sin embargo, puede que primero necesites ejecutar git branch -a
o git branch --list
para ver todas las ramas y encontrar la correcta en tu repositorio:
Este es el comando que necesitarás para eliminar una rama:
git branch -d branch-name
Querrás utilizar el nombre específico de la rama en lugar de nuestro marcador de posición.
La bandera -d
significa aquí «borrar», y en minúsculas tienes cierta protección contra el borrado de una rama con cambios sin fusionar.
Si intentas borrar una rama no fusionada, verás un error (en realidad es más bien una advertencia):
Sin embargo, puedes poner la bandera en mayúsculas utilizando -D
y saltarte esta advertencia protectora. Esto te permite eliminar una rama con cambios sin fusionar.
Ten en cuenta que no obtendrás una confirmación para eliminar la rama si utilizas la versión en mayúsculas, por lo que es una bandera que querrás utilizar con cuidado.
¿Qué causa el error «No se puede eliminar la rama»?
Dado que eliminar una rama de tu repositorio es una decisión importante sin una resolución fácil, Git arroja errores si te equivocas.
Por ejemplo, a veces irás a realizar una git delete
en una rama local y verás un error «No se puede eliminar la rama»:
Esta sencilla razón radica en tu ubicación actual dentro del repositorio de Git. No puedes borrar una rama que has «comprobado»
La solución aquí es moverte a una rama diferente.
Por esta razón, siempre te sugerimos que hagas checkout en la rama main
. De esta forma, obtendrás un error si intentas borrar main
, y también podrás borrar cualquier otra rama del repositorio.
Cómo Restaurar una Rama Local de Git Eliminada
Dado que quedará un commit después de borrar una rama local, existe una pequeña posibilidad de recuperar una rama después de realizar un git delete
. Sin embargo, es más engorroso que fusionar primero esos cambios. En esa situación, sabrás que ya no necesitarás una rama.
Cada confirmación utiliza un número hash, que actúa como su referencia. Puedes utilizar ese hash para comprobar y crear una nueva rama:
Sin embargo, si no conoces el hash de una rama eliminada, puedes utilizar el comando reflog
. Estos «registros de referencia» son muy parecidos a los que encontrarás en aplicaciones como DevKinsta.
Aunque utilizar git reflog
es un tema para otro artículo completamente distinto, puedes utilizar la funcionalidad básica para encontrar el hash de commits antiguos. Si ejecutas git reflog
, verás una lista de commits:
La primera columna de hashes aquí te permite comprobar el commit y crear una nueva rama. Por ejemplo:
git checkout 5744ff6
git branch f9d2db5
Sin embargo, ésta no es una forma infalible de recuperar una rama eliminada en Git.
En algunos casos, no habrá ningún commit en el reflog, ni ninguna referencia en HEAD
al propio commit. Por eso es mejor trabajar con tus ramas de forma más segura fusionando los cambios antes de realizar un git delete
en una rama local.
Trabajar con Ramas Git Remotas
Cuando realizas un git delete
en una rama local, a menudo tendrás un repositorio remoto asociado. Esto será especialmente cierto si bajas tu sitio a Kinsta utilizando Git.
Éste no se actualizará junto a tu repositorio local cuando realices cambios, y lo mismo ocurre cuando eliminas una rama local.
Sin embargo, tanto GitHub como GitLab tienen el mismo proceso para eliminar una rama Git remota. Es un enfoque similar al de cualquier otro push «upstream»
Este es el comando
git push remote-name -d remote-branch
Para remote-name
, la mayoría de los repos que vemos utilizan «origen» La referencia remote-branch
será la misma que la de la rama local (a menos que cambies el nombre de una rama local, lo que está fuera del alcance de este artículo)
Como apunte, puedes ver todas las ramas -tanto locales como remotas- utilizando git branch -a
. Si sólo quieres ver las ramas remotas, puedes utilizar git branch -r
.
Una vez que ejecutes el comando, verás un mensaje de confirmación, momento en el que deberías volver a ejecutar git branch -a
para comprobar que todo se ha eliminado como esperabas.
Resumen
Git es una de las pocas herramientas que te da un inmenso poder bajo el capó utilizando comandos legibles e intuitivos. Esto también se aplica a la eliminación de ramas que ya no necesites en tu máquina local. Sin embargo, tendrás que tener cuidado al ejecutar git delete en una rama local.
Esto se debe a que, si intentas eliminar cambios no fusionados, obtendrás un error o eliminarás algo que afectará a tu futuro trabajo en el proyecto. Además, también tendrás que borrar la rama remota. Tanto tu repositorio local como el remoto necesitan que realices una buena limpieza para mantener el rendimiento alto y el tamaño de los archivos al mínimo.
Aunque puede que te encuentres solo si eliminas una rama Git por error, Kinsta te cubre las espaldas en lo que respecta al Alojamiento de Aplicaciones. La plataforma de alojamiento de Kinsta te ofrece la posibilidad de conectarte y desplegar tus repos de GitHub en sólo unos minutos. Además, tendrás acceso a las máquinas C2 y a la Red de Nivel Premium de Google, junto con nuestra integración con Cloudflare, para llevar tus aplicaciones al siguiente nivel de velocidad y seguridad.