Confirmaciones de Squash que ya están insertadas en Git
Este artículo describe el proceso de aplastamiento de confirmaciones que ya hemos enviado al repositorio remoto. Aplastamos las confirmaciones en una sola para reducir el desorden en nuestro repositorio.
Para aplastar las confirmaciones, ejecutamos un git rebase
en el modo interactivo.
Confirmaciones de Squash que ya están insertadas en Git
Para facilitar el contexto, simularemos un escenario en el que necesitamos aplastar algunas confirmaciones en una después de impulsar los cambios.
Primero, enviaremos nuestros cambios actuales al repositorio remoto.
$ git push origin Dev2.1
Este comando enviará todos los cambios a nuestra rama remota Dev2.1
.
Podemos ejecutar el comando git rebase
hasta el quinto compromiso.
$ git rebase -i HEAD~5
Producción:
Para aplastar nuestras confirmaciones, reemplazaremos pick
con squash
al comienzo de las confirmaciones y finalizaremos el rebase.
Podemos ejecutar el comando git log
para ver nuestro historial de confirmaciones.
Intentar empujar resultará en un error, como se muestra a continuación.
El error se explica por sí mismo; no nos detendremos mucho en eso.
Necesitamos forzar un empujón, no con la bandera --force
sino como se muestra a continuación.
$ git push origin +Dev2.1
Producción:
Echemos un vistazo rápido al repositorio remoto en GitHub.
Usamos el +
antes de refspec
para forzar un impulso, en nuestro caso, a la rama Dev2.1
.
En conclusión, después de aplastar las confirmaciones que ya ha enviado al control remoto, un git push
normal no le servirá de nada.
Estarás atrapado en un bucle molesto en el que Git requiere que tire antes de empujar. Agregar el +
antes de su rama en el comando git push origin
resuelve el problema.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn