Como usar git reset y git revert - Curso de Git y Github desde cero - Capítulo 8

Seguimos con más temas de Git viendo un poco sobre el funcionamiento de git reset y git revert, para que puedas ver la diferencia entre estos.

Como utilizar git reset

Con git reset puedes eliminar commits que no quieras. Ten en cuenta que esto te será útil si todavía no has subido los commits a un repositorio remoto, por ejemplo, en GitHub.

Esquema git reset

Supongamos que tenemos un proyecto con la rama master y cinco commits. Quiero volver al commit número dos y borrar absolutamente todo, hasta el historial de versiones de los commits posteriores. Esto lo puedo hacer gracias a git reset.

Como ver el log (historial) de commits realizados

Antes de continuar con git reset, necesitas conocer un comando nuevo. El comando git log.

Para ver el historial de commits en una rama, lo haremos con este comando.

Código Git

git log

terminal Resultado en la consola terminal

Esto genera un log en la consola con los commits de la rama. Además, muestra el hash del commit (la combinación de números y letras), que sirve de identificador para llamar a los commit. También muestra el autor. Recuerda que al principio de este curso te mostré como especificarle un nombre de usuario y un correo electrónico. Finalmente, también muestra la fecha y hora exacta del commit. Además de el mensaje que le hemos escrito al hacerlo.

Git log

Hay una forma mucho más cómoda y práctica de ver el log. Lo podemos hacer con una opción del comado que muestre un resumen, siempre que no necesitemos más que su identificador reducido y su mensaje:

Código Git

git log --oneline

terminal Resultado en la consola terminal

5a577be (HEAD -> master) Commit 5.
bf82b56 Commit 4.
62ca6c3 Commit 3.
264fa9e Commit 2.
ce6b156 Commit 1.

Ahora, supón que quieres descartar de esta rama los commits 5, 4 y 3. Quieres volver a como estaba el proyecto en el commit 2 y borrar todo lo posterior. Lo puedes hacer así:

Código Git

git reset 264fa9e

terminal Resultado en la consola terminal

Git reset

Primero dice que hay cambios sin guardar en el área de staging después de hacer el reset, me lo indica en estas líneas:

Unstaged changes after reset:
M 	texto.txt

La letra M es una abreviación de "Modified" (modificado).

Lo que ha ocurrido es que hemos hecho un reset al propio commit 2 y a todo lo que viene delante.

En la imagen del resultado, puedes ver que al hacer log después del reset, han desaparecido los commit 3, 4 y 5. Ya no se puede recuperar ese trabajo. Voló .

Como utilizar git revert

Esquema git revert

Supongamos que tienes de nuevo los cinco commits. Partiremos de esa base.

Código Git

1105103 (HEAD -> master) Commit 5.
b4d3e06 Commit 4.
af6ed8d Commit 3.
caacdc8 Commit 2.
f21b17f Commit 1.

Con git revert puedes ir a un commit anterior y crear uno nuevo a partir de este, de modo que no pierdas commits en el historial de versiones.

Si ahora quiero trabajar a partir del commit 4 pero sin modificar el historial, es decir conservar el commit 5, lo puedo hacer con git revert. Esto creará un nuevo commit con el trabajo en el commit 4 sin borrar el commit 5 y en un nuevo commit.

Código Git

git revert 1105103

terminal Resultado en la consola terminal

Esto nos revierte (revert es revertir en español) el trabajo del commit sin eliminarlo y lo guarda como un commit nuevo.

Git revert

Esto lo puedes ver con el log, en el que aparece el commit nº 6 que es una copia del 4 sin borrar nada, para que puedas continuar el trabajo desde ahí sin alteraciones.

Git revert commit

¿Cómo acceder a un commit en concreto?

Algo que has visto hasta ahora, era como acceder a las ramas y ver el último trabajo sobre ellas, el último commit. También puedes acceder a un commit en concreto de una rama con su hash.

Código Git

git checkout hash_commit

Dónde hash_commit, lo debes reemplazar por el hash que identifica al commit. Ten en cuenta, que el HEAD debe estar con la rama activa al commit que representa.


Capítulos


    Suscríbete a mi canal de YouTube para apoyarme

    Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

    Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

    No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


    Comentarios

    Si te quedan dudas sobre el temario, sobre Git, GitHub, cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.