Revertir un Commit Específico
git revert
Como ya se ha mencionado, para revertir un commit específico se utiliza el comando git revert
. Este comando crea un nuevo commit que deshace los cambios introducidos por el commit especificado. La sintaxis básica es la siguiente:
git revert <commit-hash>
Como se puede observar, en lugar de usar HEAD como hicimos para revertir el último commit, ahora se debe especificar el hash de un commit en particular (ID del commit) que se desea revertir (reemplazar <commit-hash>
por un hash válido).
Más sobre los hashes
Recuerde que cada commit tiene su propio ID único, que es esencialmente una cadena de dígitos (0-9) y letras (a-f), es decir, una cadena hexadecimal. Esta cadena de 40 caracteres se denomina hash. Veamos nuestro commit más reciente:
Aquí está su hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Tendrás un hash diferente para este commit por la razón explicada a continuación.
El hash del commit se calcula utilizando el algoritmo SHA-1 en base a la siguiente información:
- Mensaje del commit;
- Fecha;
- Autor;
- Instantánea del árbol de trabajo;
- Hash del commit padre (o commits cuando hay más de un padre).
Si el commit es el primero en el repositorio, entonces el hash del commit padre aparentemente no se calcula.
Dado que toda esta información del commit se utiliza para calcular su hash, el uso de hashes como identificadores de commit garantiza la consistencia del repositorio. Además, la probabilidad de que dos commits diferentes tengan el mismo hash (la probabilidad de colisión) es extremadamente baja, por lo que es muy poco probable que ocurra por casualidad.
Básicamente, si se cambia cualquier cosa en el commit, su hash también cambiará. Esto significa que, en caso de que los datos se corrumpan por cualquier motivo, Git puede utilizar el hash para identificarlo.
Al modificar un commit, el ID del commit cambia, por lo que es preferible no utilizar el comando git commit --amend
al trabajar con repositorios remotos.
Ejemplo de flujo de trabajo
Antes de decidir qué commit revertir, revisemos los cuatro commits más recientes:
Podemos observar que hay un commit donde se añadió el archivo recipe.txt
. Vamos a revertir este commit creando un nuevo commit que deshará estos cambios y, en esencia, eliminará el archivo. En mi caso, su hash es el siguiente:
043b634d76a7a7744757350512b6367417c29e0
Sin embargo, el hash de tu commit será diferente. Ahora podemos revertir este commit:
Reemplaza este hash con tu propio hash.
Nuevamente, se abre el editor de texto predeterminado con el mensaje de commit predeterminado para revertir. Lo dejaremos tal como está.
A continuación, cerraremos el editor de texto de forma adecuada y mostraremos los cambios realizados en este último commit:
7 eliminaciones tuvieron lugar, lo que significa que se eliminaron las 7 líneas del archivo. Ahora verifiquemos que el archivo en sí fue eliminado listando todos los archivos y directorios no ocultos en nuestro directorio del proyecto:
Hemos eliminado correctamente el archivo recipe.txt
.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What happens if I revert a commit that is not the latest one?
Can I revert multiple commits at once?
What should I do if I get a merge conflict during revert?
Awesome!
Completion rate improved to 3.57
Revertir un Commit Específico
Desliza para mostrar el menú
git revert
Como ya se ha mencionado, para revertir un commit específico se utiliza el comando git revert
. Este comando crea un nuevo commit que deshace los cambios introducidos por el commit especificado. La sintaxis básica es la siguiente:
git revert <commit-hash>
Como se puede observar, en lugar de usar HEAD como hicimos para revertir el último commit, ahora se debe especificar el hash de un commit en particular (ID del commit) que se desea revertir (reemplazar <commit-hash>
por un hash válido).
Más sobre los hashes
Recuerde que cada commit tiene su propio ID único, que es esencialmente una cadena de dígitos (0-9) y letras (a-f), es decir, una cadena hexadecimal. Esta cadena de 40 caracteres se denomina hash. Veamos nuestro commit más reciente:
Aquí está su hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Tendrás un hash diferente para este commit por la razón explicada a continuación.
El hash del commit se calcula utilizando el algoritmo SHA-1 en base a la siguiente información:
- Mensaje del commit;
- Fecha;
- Autor;
- Instantánea del árbol de trabajo;
- Hash del commit padre (o commits cuando hay más de un padre).
Si el commit es el primero en el repositorio, entonces el hash del commit padre aparentemente no se calcula.
Dado que toda esta información del commit se utiliza para calcular su hash, el uso de hashes como identificadores de commit garantiza la consistencia del repositorio. Además, la probabilidad de que dos commits diferentes tengan el mismo hash (la probabilidad de colisión) es extremadamente baja, por lo que es muy poco probable que ocurra por casualidad.
Básicamente, si se cambia cualquier cosa en el commit, su hash también cambiará. Esto significa que, en caso de que los datos se corrumpan por cualquier motivo, Git puede utilizar el hash para identificarlo.
Al modificar un commit, el ID del commit cambia, por lo que es preferible no utilizar el comando git commit --amend
al trabajar con repositorios remotos.
Ejemplo de flujo de trabajo
Antes de decidir qué commit revertir, revisemos los cuatro commits más recientes:
Podemos observar que hay un commit donde se añadió el archivo recipe.txt
. Vamos a revertir este commit creando un nuevo commit que deshará estos cambios y, en esencia, eliminará el archivo. En mi caso, su hash es el siguiente:
043b634d76a7a7744757350512b6367417c29e0
Sin embargo, el hash de tu commit será diferente. Ahora podemos revertir este commit:
Reemplaza este hash con tu propio hash.
Nuevamente, se abre el editor de texto predeterminado con el mensaje de commit predeterminado para revertir. Lo dejaremos tal como está.
A continuación, cerraremos el editor de texto de forma adecuada y mostraremos los cambios realizados en este último commit:
7 eliminaciones tuvieron lugar, lo que significa que se eliminaron las 7 líneas del archivo. Ahora verifiquemos que el archivo en sí fue eliminado listando todos los archivos y directorios no ocultos en nuestro directorio del proyecto:
Hemos eliminado correctamente el archivo recipe.txt
.
¡Gracias por tus comentarios!