Revertir un repositorio de Git a una confirmación anterior

John Wachira 15 febrero 2024
  1. Retroceder temporalmente a una confirmación anterior
  2. Eliminar confirmaciones no publicadas
  3. Deshacer confirmaciones publicadas
Revertir un repositorio de Git a una confirmación anterior

Este artículo describe cómo puede revertir un repositorio de Git a una confirmación anterior. Estos son los tres métodos que cubriremos.

  1. Retroceder temporalmente a una confirmación anterior
  2. Eliminar confirmaciones no publicadas
  3. Deshacer confirmaciones publicadas

Retroceder temporalmente a una confirmación anterior

Nuestro primer método implica el uso del comando git checkout.

Esto nos permitirá volver a una confirmación de Git anterior sin volver a escribir el historial de confirmación en nuestra rama. Aquí hay un ejemplo.

Suponiendo que este es nuestro historial de confirmaciones, ¿cómo volvemos a las tres confirmaciones? (es decir, CABEZA ~ 3)

historial de compromisos

Podemos ejecutar el comando git checkout, como se ilustra a continuación.

$ git checkout HEAD~3

Modo separado

Como se vio arriba, actualmente estamos en modo separado. Podemos hacer cambios, experimentar y confirmar los cambios sin afectar ninguna rama.

Tenga cuidado en el modo HEAD desconectado, ya que puede perder los cambios realizados. Para conservar estos cambios, cree una nueva rama, como se muestra a continuación.

$ git checkout -b Detached

Puedes nombrar tu sucursal como quieras.

Eliminar confirmaciones no publicadas

Los cambios no publicados son simplemente las confirmaciones que aún no ha enviado al repositorio remoto.

Puede eliminar las confirmaciones para revertir su repositorio local a un estado anterior con el comando git reset. Aquí hay un ejemplo.

¿Qué pasaría si quisiéramos eliminar las tres confirmaciones que discutimos en la sección anterior en lugar de cambiar temporalmente? ¿Cómo lo haríamos?

Ejecutaremos el comando git reset para eliminar por completo las tres confirmaciones, como se ilustra a continuación.

$ git reset --hard HEAD~3

El comando anterior eliminará las tres confirmaciones y cualquier cambio no confirmado. Asegúrese de ejecutar el comando git stash si desea conservar los cambios no confirmados.

Tenga en cuenta que este método solo debe usarse cuando no haya enviado sus cambios al repositorio remoto, especialmente si se trata de un repositorio compartido.

Deshacer confirmaciones publicadas

En la sección anterior, hemos visto cómo puede eliminar confirmaciones no publicadas. ¿Qué sucede si ya envió las confirmaciones al repositorio remoto?

El comando git reset --hard es destructivo y puede estropear la línea de tiempo de su proyecto donde varios desarrolladores están trabajando en el mismo proyecto.

La forma más segura de deshacer las confirmaciones publicadas consiste en utilizar el comando git revert. Esto no reescribe el historial de confirmaciones, sino que lo revierte y crea una nueva confirmación.

Hará que sea más fácil para otros desarrolladores entender lo que está sucediendo.

Para revertir los tres compromisos, ejecutaremos:

$ git revert --no-commit HEAD~3..HEAD

revertir tres confirmaciones

El indicador --no-commit nos permitirá crear un mensaje de confirmación para las tres confirmaciones revertidas. Si no incluye la bandera, lo obligará a crear un mensaje de confirmación para cada confirmación, lo que parece desordenado y desordenará su repositorio.

En pocas palabras, hay tres formas de volver a una confirmación anterior en Git. Todo depende de la definición de revertir en su circunstancia.

Si desea cambiar temporalmente a una confirmación anterior, use el comando git checkout. El git reset --hard debe reservarse para cambios no publicados, mientras que el comando git revert funciona mejor para confirmaciones publicadas.

John Wachira avatar John Wachira avatar

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

Artículo relacionado - Git Revert