Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Revertir un Commit Específico | Revertir Cambios
Conceptos Esenciales de Git

bookRevertir 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

Note
Nota

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.

Note
Nota

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.

question-icon

Relaciona las acciones con los comandos respectivos.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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

bookRevertir 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

Note
Nota

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.

Note
Nota

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.

question-icon

Relaciona las acciones con los comandos respectivos.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 5
some-alt