Todo sobre Apple, Android, Juegos Apks y Sitios de Peliculas

Mantenga limpio el historial de su repositorio Git aplastando las confirmaciones

¿Estás cansado de historiales de confirmaciones desordenados que abarrotan tus repositorios de Git y solicitudes de extracción? Afortunadamente, Git tiene la capacidad de “aplastar confirmaciones”, lo que fusiona varias confirmaciones pequeñas en una. Esto ayuda a mantener el historial de código limpio y organizado, y es fácil de hacer con unos pocos comandos.

¿Por qué Squash se compromete?

Una de las reglas de oro de la buena etiqueta de Git es comprometerse con frecuencia con buenos mensajes que expliquen lo que hacen las confirmaciones. Sin embargo, esto puede convertirse rápidamente en un problema si se realizan demasiadas confirmaciones. Después de todo, nadie quiere revisar una solicitud de extracción con 40 confirmaciones diferentes, todas listas para fusionarse en la maestra; simplemente es demasiado desorden.

Entonces, antes de enviar a un repositorio remoto como GitHub, es una buena práctica aplastar esas confirmaciones, lo que las fusionará todas en una gran confirmación. Todos los mensajes de confirmación de esas confirmaciones se agregarán al “compromiso de aplastamiento” para que aún estén visibles cuando los envíe a GitHub o envíe su solicitud de extracción.

Tampoco siempre es necesario aplastar cada confirmación, ya que a veces es bueno dividir las cosas si estás trabajando en varios archivos o partes diferentes del repositorio. Sin embargo, si simplemente realiza varios cambios en un solo archivo a lo largo del tiempo, probablemente debería eliminar esas confirmaciones.

Es importante tener en cuenta que no puedes aplastar las confirmaciones que ya se enviaron a GitHub sin fuerza de empuje, lo cual es una operación destructiva. La eliminación de confirmaciones sobrescribe el historial de Git, lo cual está bien si lo haces solo en tu máquina local. Si lo está haciendo en GitHub, requiere un impulso forzado, lo que significa que todos los miembros de su equipo deben volver a clonar el repositorio para evitar conflictos.

Para evitar estos problemas, es mejor aplastar las confirmaciones antes de enviarlas al repositorio remoto. Dado que este es el momento en el que normalmente querrás hacer esto, normalmente no es un problema.

Aplastando compromisos de Git con git merge

Hay un par de formas diferentes de aplastar las confirmaciones, ya que no existe un comando oficial de git squash. Uno de los más fáciles es usar git merge con la bandera –squash. Esta técnica fusionará las últimas N confirmaciones en una.

Primero, querrás asegurarte de que tu repositorio esté completamente limpio, sin cambios activos. Puede verificar el estado de git para verificar que no tiene cambios locales que el reinicio desecharía.

A continuación, querrás restablecer la rama a la posición en la que estaba antes de cualquiera de las confirmaciones que deseas agrupar. Por ejemplo, para aplastar las últimas tres confirmaciones, usarías HEAD~3que técnicamente es el cuarto compromiso en la historia, pero eliminará los tres compromisos suprimibles de su historial.

git reset --hard HEAD~3

También puedes usar un commit SHA-1 hash para hacer referencia a una confirmación directamente. A continuación, ejecutamos git merge –squash, siendo el objetivo de fusión HEAD@{1}, que es la posición del HEAD antes del último comando.

git merge --squash 'HEAD@{1}'

Git ya ha preparado todos los cambios con el mensaje de confirmación adecuado en este punto, pero es necesario confirmarlo:

git commit

Una vez hecho esto, podrá enviar todas las confirmaciones a su repositorio de origen ascendente.

Más control sobre el aplastamiento con Rebase interactivo

Si no desea agrupar todo en una confirmación de un bit, puede realizar una rebase interactiva para seleccionar solo las confirmaciones que desea agrupar. Rebasar puede ser complicado, pero es fácil de hacer con los pasos correctos.

Primero, inicie la rebase interactiva apuntando a la confirmación antes de la última confirmación que se puede aplastar:

git rebase -i HEAD~3

Esto abrirá un editor de texto, donde querrás cambiar “elegir” por “aplastar” para cada confirmación que quieras fusionar.

Luego, Git abrirá otro editor, lo que le permitirá crear un nuevo mensaje de confirmación para la confirmación combinada. Guarde esto y la rebase debería finalizar.

Rebasar de esta manera fusionará todas las confirmaciones aplastadas en la siguiente confirmación encima de ellas. En este caso, la segunda y tercera confirmación se fusionaron en la primera.

Cómo aplastar los compromisos de Git con una GUI de Git

Como la mayoría de las acciones en Git, aplastar confirmaciones con una interfaz es mucho más fácil que recordar y escribir comandos cada vez. De hecho, en GitKraken, simplemente puedes presionar Control y hacer clic en las confirmaciones que deseas aplastar y hacer clic derecho para presionar “Squash”. 2 comete”:

Puede leer nuestra guía sobre clientes GUI Git para obtener más información.