Git ofrece comandos para enmendar mensajes de commits. Entre ellos vamos a destacar los comandos git commit –amend y git rebase y entender cómo trabajan.
Qué ocurre cuando se cambia el mensaje de un commit
- El texto que escribimos para describir los cambios que hemos realizado forman parte del propio commit.
- Por lo que si cambiamos el mensaje de un commit, cambiará el identificador del commit y su (SHA1 checksum).
- Esto quiere decir que se crea un nuevo commit que reemplazará al anterior.
El checksum es un hash generado por el algoritmo de encriptacion SHA1 a 256 bits y que permite a git detectar cualquier cambio realizado en un fichero, para así proteger la integridad de este.
amend
Cuando el commit sólo exista en tu repositorio local y este aún no haya sido enviado al repositorio remoto, podremos ejecutar el comando git commit con el argumento –-amend (enmendar).
1 |
$ git commit --amend |
De esta manera editaremos el mensaje del último commit realizado y se creará uno nuevo que lo reemplazará.
También podremos incluir otro tipo de información, como pueden ser co-autores del commit.
1 2 |
$ git commit -m "corrección y actualización de la clase redsys >Co-authored-by: jose <jose@artegrafico.net>" |
… ó también podemos incluir otro tipo de información, como la organización o empresa que lo realiza.
1 2 |
$ git commit -m "corrección y actualización de la clase redsys >on-behalf-of: @empresa <jose@artegrafico.net>" |
Modificando el mensaje del commit más reciente que se ha enviado remotamente
- Primeramente tendremos que cambiar el mensaje del commit en nuestro repositorio local.
- Una vez cambiado haremos un git push para enviar los cambios a la rama indicada.
1 |
$ git push --force rama |
!!! No se recomienda usar –force ya que si trabajas en grupo con tu repositorio remoto posiblemente sobrescribas o elimines cualquier cambio (commit) realizado por tus compañeros. Para ello hacer uso del argumento –force-with-lease
Modificando el mensaje de otros commits ya enviados
Para modificar mensajes de commits ya enviados haremos uso del comando git rebase, que forzará el envío para cambiar la historia del commit.
1 |
$ git rebase -i HEAD~3 |
El el ejemplo estamos indicando que nos muestre los últimos 3 commits confirmados de la rama actual en la que estemos situados.
1 2 3 |
pick 50e80f8 dom pick 635390d add alert function pick 4f13cd0 add alerts example Co-authored-by: jose <info@artegrafico.net> |
Para poder reemplazar el mensaje de uno de ellos bastaría con reemplazar pick por reword del commit que necesitemos cambiar.
1 2 3 |
pick 50e80f8 dom reword 635390d add alert function pick 4f13cd0 add alerts example Co-authored-by: jose <info@artegrafico.net> |
Y a continuación ya se nos permite cambiar el mensaje del commit marcado con reword.
Por último forzamos el envío de los commits que hemos corregido.
1 |
$ git push --force |