Volver a un commit anterior en el repositorio en Git
-
Uso de
git reset
para restablecer un commit anterior en el repositorio de Git -
Uso de
git revert
para volver a un commit anterior en el repositorio de Git
En este tutorial, aprenderemos cómo volver a un commit anterior en el repositorio de Git.
Git, un sistema de control de versiones, se utiliza en un entorno de desarrollo colaborativo para realizar un seguimiento de los cambios realizados en los archivos.
Git se usa para capturar instantáneas de los cambios de los archivos en un directorio de proyecto y los asocia con commits.
En Git, al usar commits, uno puede navegar y ver el historial de cambios realizados en los archivos.
También podemos usar Git para restablecer o revertir los archivos del directorio del proyecto en el repositorio de Git a un commit anterior (es decir, el estado de los archivos en el directorio, cuando se creó el commit).
Ahora ilustraremos esto con un ejemplo.
Uso de git reset
para restablecer un commit anterior en el repositorio de Git
En un entorno de desarrollo colaborativo, usamos Git para realizar un seguimiento de los cambios realizados en los archivos en el directorio del proyecto en un repositorio de Git.
Cuando creamos un commit para guardar nuestro trabajo, Git crea una ID única (también conocida como SHA
o hash
) que nos permite mantener un registro de los cambios específicos confirmados junto con quién los realizó y cuándo.
un commit es un cambio individual en un archivo (o conjunto de archivos). los commits generalmente contienen un mensaje de commit que es una breve descripción de los cambios que se realizaron.
A veces, es posible que necesitemos revertir o restablecer el repositorio del directorio del proyecto a un commit anterior.
Supongamos que tenemos las siguientes commits como se muestra en el comando git log
en nuestro repositorio.
$ git log --oneline
e4cd6b4 (HEAD -> main, origin/main) my change
99541ed second change
41f1f2a first change
...
Ahora, digamos que queremos restablecer nuestro repositorio al commit anterior proporcionada por SHA 41f1f2a
con el comentario first change
.
Una forma de hacerlo es cambiar temporalmente al commit anterior usando el comando git checkout
.
Por lo tanto, haríamos lo siguiente.
$ git checkout 41f1f2a
También podemos crear una nueva rama con el commit anterior, para que podamos confirmar los nuevos cambios en esa rama.
Por lo tanto, haríamos lo siguiente.
$ git checkout -b first-change-branch 41f1f2a
En cambio, si queremos descartar los cambios del commit anterior, usaríamos el comando git reset
.
La sintaxis del comando git reset
para restablecer el repositorio a un commit anterior es git reset -hard <commit-sha-id>
.
Así, en nuestro caso, haríamos lo siguiente.
$ git reset --hard 41f1f2a
Tenga en cuenta que debe usar esto con precaución; esto también descartará cualquier modificación local. Cualquier cambio no confirmado se perderá.
Alternativamente, podemos ocultar los cambios antes de hacer el reinicio, de la siguiente manera.
$ git stash
$ git reset --hard 41f1f2a
$ git stash pop
Después de ejecutar los comandos anteriores, las modificaciones locales se guardan en el alijo; y luego, después de restablecer el commit anterior, esas modificaciones se vuelven a aplicar al repositorio.
Uso de git revert
para volver a un commit anterior en el repositorio de Git
El comando git revert
se usa cuando queremos mantener el historial del repositorio.
Al ejecutar el comando git revert
, Git crea un commit con el parche inverso para anular el commit anterior. De esta manera, no reescribimos ninguna historia.
La sintaxis del comando git revert
para revertir el repositorio a un commit anterior es git reset <commit-sha-id1> <commit-sha-id2> ...
.
Por lo tanto, queremos revertir los dos primeros compromisos para revertir el repositorio al compromiso dado por SHA 41f1f2a
.
$ git revert e4cd6b4 99541ed
Revertirá el repositorio por los dos compromisos dados.
También podemos ejecutar el comando git revert
de la siguiente manera.
$ git revert HEAD~2..HEAD
El comando git revert
anterior revertiría las dos últimas commits.
Finalmente, como se mencionó anteriormente, el comando git revert
crea un commit para cancelar el compromiso anterior. Por lo tanto, ahora necesitaríamos guardar este compromiso.
Tenemos que hacer lo siguiente.
$ git commit -m "reverted commits e4cd6b4 99541ed"
Por lo tanto, ahora la reversión de los commits ahora se guarda en el repositorio como un nuevo commit.
En algunos casos, hay un commit de fusión presente y es posible que también queramos revertirla.
Podemos usar el comando git revert
con la opción -m parent-number
; esta opción especifica el número de padre (a partir de 1) de la línea principal y permite revertir el cambio relativo al padre especificado.
el commit de fusión tiene varios padres. El comando git revert
necesita información adicional para decidir qué padre de la fusión se considerará como la línea principal.
La sintaxis del comando es, git revert -m 1 <commit-sha-id>
, el 1
se usa para el primer padre como línea principal.
Por lo tanto, supongamos que el commit SHA e4cd6b4
es un commit de fusión. Entonces podemos hacer lo siguiente.
$ git revert -m 1 e4cd6b4
Por lo tanto, hemos explicado cómo volver a un commit anterior en el repositorio de Git.
Para mayor información por favor visite -
Artículo relacionado - Git Reset
- Diferencia entre Git RM --Cached y Git Reset File
- Diferencia entre los comandos Git Reset, Revert y Checkout
- Haga que la rama de desarrollo sea idéntica a la rama principal
- Revertir una combinación de Git con conflictos
- Varios métodos utilizados para eliminar los cambios locales de Git
- Deshacer cambios en Git