Cómo eliminar commits de la rama master con GIT

0
351

Introducción

Hace poco estuve trabajando en un hook de git y para las pruebas necesitaba estar haciendo commits y push constantemente para ver el resultado de mi prueba.

Para no tener que hacer cambios en el código de forma constante para realizar un commit, git nos da la opción de crear commits sin cambios en el código. Basta con usar la opción –allow-empty:

git commit -m «commit with no changes» –allow-empty

El problema de usar esta opción es que empiezas a llenar el historial de commits con información que no sirve para nada.

Pues bien, hoy vas a aprender a eliminar dichos commits de origin sin morir en el intento

Comencemos!

Lo primero que vamos a hacer es obtener el log de nuestro respositorio para ver cuales son los últimos commits y decidir cuáles son los que queremos borrar. Para ellos ejecuta el siguiente comando:

De esta manera obtendremos el listado de commits de nuestra rama main:

Para nuestro ejemplo, lo que queremos hacer es eliminar todos los commits que tienen en la descripción «empty commit» que son todas mis pruebas. Es decir, los commits que van desde el commit d53c00f al ecb7ef3.

Para eliminar estos commits vamos a usar el comando «git rebase» el cual nos permite mover nuestra a rama a cualquier punto del historial de commits.

Ejecutemos pues el siguiente comando:

Dicho comando nos abrirá nuestro editor por defecto con los últimos 6 commits del repositorio:

*Date cuenta de que los commits aparecen justo al revés de como nos los muestra git log, es decir, en este fichero el commit 22dcc79 es el más viejo

Justo debajo de los commits tenemos una leyenda en donde se nos explica qué podemos hacer con el historial de commits. Entre las distintas opciones está la de borrar líneas del fichero. Por lo tanto, vamos a borrar los commits que no queremos en el historial, quedando el fichero de la siguiente manera:

Una vez hemos guardado los cambios, lo siguiente que vamos a hacer es pushear el cambio a nuestra rama main:

Presta especial atención al «+» delante de la rama «main». Este caracter está indicando a git que fuerce el push a dicha rama. Si no lo ponéis git se quejará y no podréis pushear el cambio. Una vez pusheado, comprobad cómo en vuestro historial de commits han desaparecido esos commits que no valían para nada.

Conclusiones

Hoy hemos aprendido como podemos eliminar commits de la rama main sin morir en el intento. Eso sí, tened mucho cuidado cuando hagáis este tipo de cambios ya que una vez borremos los commits, éstos desaparecerán y no podremos volver a recuperarlos. Tened mucho cuidado y habladlo con vuestro equipo antes de eliminar nada.

Dejar respuesta

Please enter your comment!
Please enter your name here