17. Eliminar una confirmación de una rama

Objetivos

  • Aprender a eliminar las últimas confirmaciones de la rama

Revert es un poderoso comando de la sección anterior que le permite cancelar cualquier confirmación en el repositorio. Sin embargo, tanto las confirmaciones originales como las canceladas se ven en el historial de la rama (cuando se usa el comando git log).

A menudo, después de que ya se ha realizado una confirmación, nos damos cuenta de que fue un error. Sería bueno tener una comando deshacer que permite eliminar inmediatamente las confirmaciones incorrectas. Este comando evitaría la aparición de una o más confirmaciones no deseadas en el git log historial.

01 El comando reset

Ya hemos usado el comando reset para hacer coincidir la zona de amortiguamiento y la confirmación seleccionada (la confirmación HEAD se usó en la lección anterior).

Cuando se proporciona una referencia de confirmación (es decir, una rama, un hash o un nombre de etiqueta), el reset comando …

  1. Sobrescribirá la rama actual para que apunte a la confirmación correcta
  2. Opcionalmente, restablecerá la zona de amortiguación para que cumpla con la confirmación especificada
  3. Restablecer opcionalmente el directorio de trabajo para que coincida con la confirmación especificada

02 Verifique nuestro historial

Hagamos un escaneo rápido de nuestro historial de confirmaciones .

Ejecutar:

git hist

Resultado:

Vemos que las dos últimas confirmaciones en esta rama son «Vaya «y» Revertir Vaya «. Eliminémoslos con el comando reset.

03 Marque esta rama primero

Marquemos la última confirmación con tag, so you can find it after removing a commit(s).

Ejecutar:

git tag oops

04 Restablecer la confirmación de la anterior Oops

En En el registro de historial anterior, la confirmación etiquetada como «v1» está antes de las confirmaciones «Oops» y «Revert Oops». Reiniciemos la rama a ese punto. Como la rama tiene una etiqueta, podemos usar el nombre de la etiqueta en el comando de reinicio (si no tiene una etiqueta, podemos usar el valor hash).

Ejecutar:

git reset --hard v1git hist

Resultado:

Nuestra rama maestra apunta a la confirmación v1 y las confirmaciones «Revert Oops» y «Oops» ya no existen en la rama. El parámetro --hard hace que el directorio de trabajo refleje la nueva rama.

05 Nada se pierde nunca

¿Qué pasó con las confirmaciones incorrectas? Todavía están en el repositorio. De hecho, todavía podemos referirnos a ellos. Al comienzo de la lección, creamos la etiqueta «oops» para la confirmación cancelada. Echemos un vistazo a todas las confirmaciones.

Ejecutar:

git hist --all

Resultado:

Podemos ver que las confirmaciones incorrectas no se han ido. Ya no aparecen en la rama maestra, pero aún permanecen en el repositorio. Todavía estarían en el repositorio si no los etiquetamos, pero entonces podríamos hacer referencia a ellos solo por sus nombres hash. Las confirmaciones sin referencia permanecen en el repositorio hasta que el sistema ejecuta el software de recolección de basura.

06 Peligros de restablecimiento

Los restablecimientos en ramas locales suelen ser inofensivos. Las consecuencias de cualquier «accidente» se pueden revertir usando la confirmación adecuada.

Sin embargo, otros usuarios que comparten la rama pueden confundirse si la rama se comparte en repositorios remotos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *