Curso de git y github desde cero

git reset y git revert

Capítulo 8: ¿Cómo usar git reset y git revert?

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.

git log

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 comando que muestre un resumen, siempre que no necesitemos más que su identificador reducido y su mensaje:

git log --oneline
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í:

git reset 264fa9e
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.

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.

git revert 1105103

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.

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.


Comentarios

Si te quedan dudas sobre el temario, sobre html, o 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.

Programación Fácil YouTube

Suscríbete

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.