Git: modificar un mensaje de confirmación existente

Los errores son comunes, todos los cometemos. Por eso le ponen borradores a los lápices. Y esto no es diferente con herramientas como Git. Si bien algunos cambios pueden ser difíciles...

Los errores son comunes, todos los cometemos. Por eso le ponen borradores a los lápices. Y esto no es diferente con herramientas como Git. Si bien algunos cambios pueden ser difíciles de deshacer, generalmente hay una manera.

Entonces, ¿qué sucede si desea modificar un mensaje de confirmación existente? Afortunadamente, esto es fácil de hacer en Git, pero el método puede cambiar un poco dependiendo de algunos factores.

Arreglar la última confirmación, aún no enviada a remoto

Este es el caso más simple ya que no hay necesidad de modificar un repositorio remoto, solo necesita modificar el suyo propio. En este caso, puede utilizar el siguiente comando:

1
$ git commit --amend

Ejecutar este comando abrirá un editor donde puedes modificar el último mensaje de confirmación. Una vez que haya terminado y guarde/cierre el editor, se cambiará el mensaje de confirmación.

Personalmente, prefiero hacer la mayoría de las cosas en la línea de comandos, lo que puede hacer agregando un argumento y un mensaje al comando anterior:

1
$ git commit --amend -m "Added a new file"

Hacerlo de esta manera no abrirá el editor, sino que simplemente modificará el mensaje de confirmación inmediatamente.

Corrección de la última confirmación enviada a remoto

Este es otro caso común, y es un poco más difícil de solucionar, no solo porque necesitamos modificar nuestro propio repositorio, sino que también necesitamos modificar el repositorio remoto, que podría estar más adelante que su sucursal local.

El primer paso es modificar el último compromiso, tal como lo hicimos en la sección anterior:

1
$ git commit --amend -m "Added a new file"

Luego, debe enviar estos cambios al repositorio remoto. Sin embargo, esto debe hacerse usando el indicador --force.

1
$ git push <remote> <branch> --force

Necesitamos hacerlo de esta manera para sobrescribir el repositorio remoto con nuestro propio estado local.

Tenga en cuenta que, al forzar el impulso, también perderá cualquier confirmación en la rama local que aún no tenga en su rama local. ¡Proceda con precaución!

Si puede detectar el error lo suficientemente rápido, entonces hacer el cambio no será un problema. De lo contrario, es posible que deba encontrar otra solución para evitar perder los cambios realizados después del mensaje de confirmación que desea cambiar.

Usar reorganización interactiva

Otra opción, que es más flexible que las soluciones anteriores descritas, es utilizar un rebase interactivo. Hacer esto le permite inspeccionar las últimas N confirmaciones y realizar cambios en ellas, incluida la selección, el aplastamiento, etc.

Para iniciar el rebase, puede usar el siguiente comando:

1
$ git rebase -i HEAD~n

Aquí, n es el número de confirmaciones que desea inspeccionar y editar. Luego verá una lista de confirmaciones, similar a esta:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file

# Rebase d05209d..5e9cdc5 onto d05209d (4 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

Como puede ver, se enumeran todas las últimas N confirmaciones y puede modificar sus mensajes según sea necesario.

Licensed under CC BY-NC-SA 4.0