git revert

Descripción
El comando git revert es una operación de "deshacer". A diferencia de otros comandos de deshacer, no reescribe el historial. El comando git revert revierte los cambios introducidos por el commit y añade un nuevo commit con el contenido revertido resultante. Esto evita que Git pierda el historial, lo cual es esencial para la integridad del historial de revisiones y una colaboración adecuada. El revertido se utiliza para aplicar el commit inverso desde el historial del proyecto. Puedes usar git revert para retroceder automáticamente y realizar correcciones.
Opciones
-e --edit | Abre el editor del sistema configurado y te solicita editar el mensaje del commit antes de confirmar el revertido. Opción predeterminada. |
|---|---|
--no-edit | Evita que se abra el editor (lo opuesto a la opción -e). |
-n --no-commit | Añade las modificaciones inversas al Índice de Preparación y al Directorio de Trabajo en lugar de crear un nuevo commit. |
-m <parent-number> | Para revertir commits de fusión, especifica el commit padre contra el cual revertir. |
Ejemplos
# Stage the reverted changes without committing them (useful for review)
git revert -n HEAD
# Revert a merge commit against its first parent
git revert -m 1 <merge-commit-hash>Cómo funciona
Al igual que git checkout y git reset, git revert también toma un commit especificado, pero no mueve los punteros de referencia a este commit. La operación de revertido toma el commit especificado, invierte las modificaciones de ese commit y crea un nuevo commit de revertido.
Aquí hay un ejemplo de creación de un repositorio:
Comando git revert
mkdir git_revert_example
cd git_revert_example/
git init .
#Initialized empty Git repository in /git_revert_example/.git/
touch w3docs_file
git add w3docs_file
git commit -m "original commit"
#[master (root-commit) 299b15f] original commit
#1 file changed, 0 insertions(+), 0 deletions(-)
#create mode 100644 w3docs_file
echo "original content" >> w3docs_file
git commit -m "add new content to w3docs_file"
#[master 3602d88] add new content to w3docs_file
#1 file changed, 1 insertion(+)
echo "prepended line content" >> w3docs_file
git commit -m "prepend content to w3docs file"
#[master 86bb32e] prepend content to w3docs file
#1 file changed, 1 insertion(+)
git log --oneline
#86bb32e prepend content to w3docs file
#3602d88 add new content to w3docs file
#299b15f original commitEn este ejemplo, se inicializa un repositorio en un directorio recién creado llamado git_revert_example. Hay 3 commits en el repositorio en los que se añade un archivo llamado w3docs_file. Su contenido ha sido cambiado dos veces. Utilizamos git log al final de la configuración del repositorio para mostrar los 3 commits en el historial de commits. Ahora podemos invocar git revert:
git revert
git revert HEAD
#[master b9cd081] Revert "prepend content to w3docs file"
#1 file changed, 1 deletion(-)git revert no funcionará sin pasar una referencia de commit. En el ejemplo dado, se ha pasado en la referencia HEAD para revertir el último commit. Un revertido crea un nuevo commit que abre el editor del sistema configurado para crear un nuevo mensaje de commit. Podemos usar git log y ver el nuevo commit añadido al registro anterior:
git log --oneline
git log --oneline
#2365e21 Revert "prepend content to w3docs_file"
#23ab21e prepend content to w3docs file
#3602d88 add new content to w3docs_file
#345b23f original commitDespués del revertido, el 3er commit sigue estando en el historial del proyecto. git revert añadió un nuevo commit para deshacer sus cambios en lugar de eliminarlo.
Revertir vs. Restablecer
El comando git revert deshace solo un commit, mientras que git reset vuelve a un estado anterior del proyecto eliminando los commits subsiguientes.


El revertido se considera una operación segura para commits que han sido publicados en un repositorio compartido. Otra ventaja de revertir es apuntar a un commit específico en un punto aleatorio del historial. Evita usar git revert en commits privados o no publicados, donde git reset es más eficiente. Encuentra información detallada sobre git reset en nuestra próxima página.
Práctica
¿Cuáles son las características y opciones del comando 'git revert'?