Cómo deshacer la última confirmación con Git en Linux

1 mar 2021 3 min di lettura
Cómo deshacer la última confirmación con Git en Linux
Indice dei contenuti

Introducción

Cuando trabaje con Git, es posible que desee deshacer la última confirmación. Una confirmación es una instantánea de un repositorio de Git en un momento dado. Git tiene una variable de referencia llamada HEAD que apunta a la última confirmación en la rama de trabajo actual. Para deshacer una confirmación, todo lo que tiene que hacer es apuntar la HEAD a la instantánea anterior.

Esta guía explica cómo deshacer la última confirmación de Git en Linux.

No se recomienda cancelar una confirmación que ya se envió a un repositorio compartido. Si solo desea cambiar el mensaje de confirmación, consulte este artículo.

Arquitectura Git de tres árboles

En Git puedes deshacer los cambios usando el git reset seguido del identificador de confirmación.

git reset acepta argumentos adicionales que le permiten controlar el comportamiento del comando. Para comprender mejor cómo reset, hablemos de los tres árboles diferentes de Git. La arquitectura de tres árboles es el concepto clave del sistema de gestión Git. Se llaman árboles porque representan colecciones de archivos.

Git gestiona y manipula los siguientes tres árboles:

  • El directorio de trabajo: un directorio que incluye todos los subdirectorios y archivos del sistema de archivos local asociado con el repositorio. A menudo se lo denomina "árbol de trabajo". El directorio de trabajo es algo así como una caja de arena donde puede probar los cambios antes de enviarlos al índice de ensayo.
  • El índice: este árbol realiza un seguimiento de los archivos nuevos o modificados que se han agregado al índice con git add, que se incluirán en la próxima confirmación. A menudo se denomina "área de preparación" o "índice de preparación".
  • HEAD: un puntero a su última confirmación en la rama actual.

El git reset tiene tres argumentos que corresponden a los tres árboles:

  • --soft: actualiza el HEAD a la confirmación especificada. El directorio de trabajo y el índice no se modifican.
  • --mixed: actualiza el HEAD y restablece el índice a la confirmación especificada. El directorio de trabajo no se toca. Este es el modo de funcionamiento predeterminado del comando de reset
  • --hard: actualiza el HEAD y restablece el índice y el directorio de trabajo a la confirmación especificada. Tenga mucho cuidado al utilizar esta opción, ya que cualquier cambio local que no haya realizado se sobrescribirá y se perderá.

Deshacer la última confirmación

Para deshacer la última confirmación sin perder los cambios realizados en los archivos locales y el índice, llame a git reset con la --soft seguida de HEAD~1:

git reset --soft HEAD~1

HEAD~1 es una variable que apunta a la confirmación anterior. El comando anterior mueve la rama actual hacia atrás una confirmación, deshaciendo efectivamente la última confirmación. Si ejecuta el git status, verá que los archivos modificados se enumeran como cambios no guardados.

Para actualizar el HEAD para restablecer el índice, ejecute git reset con --mixed o sin una opción:

git reset --mixed HEAD~1
git reset HEAD~1

Los archivos modificados se conservan, pero a diferencia del ejemplo anterior, los cambios ahora no están preparados para su confirmación.

Si no desea conservar los cambios realizados en los archivos, llame al git reset con la opción --hard

git reset --hard HEAD~1

Antes de realizar un restablecimiento completo, asegúrese de que ya no necesita los cambios.

Deshacer múltiples confirmaciones

Con git reset, puedes volver a cualquier confirmación anterior.

Por ejemplo, para mover la rama actual hacia atrás tres confirmaciones, usaría:

git reset --hard HEAD~3

Como estamos usando --hard, el comando anterior eliminará las últimas tres instantáneas del historial de confirmaciones.

Otra forma de volver a una confirmación específica es pasar el ID de confirmación al comando git reset

Use git log --oneline para encontrar los ID de confirmación:

git log --oneline

El comando mostrará una lista de todas las confirmaciones, incluida la ID y la primera línea del mensaje de confirmación:

42912333 (HEAD -> master) Update changelog
 6505778c adding new tests
 650862ab new blog post
 85a63416 sort configuration file
 152032c4 Refactor User class...

Una vez que sepa la ID de la confirmación a la que desea restablecer, pase la ID al comando git reset

git reset --hard 85a63416

Conclusión

Para deshacer la última confirmación, use el comando git reset No restablezca las confirmaciones transferidas, ya que podría causar muchos problemas a su equipo.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.