Cómo deshacer y rehacer cambios en Git: guía completa de comandos

| Última modificación: 24 de agosto de 2026 | Tiempo de Lectura: 5 minutos
Premios Blog KeepCoding 2025

Contribuyo a acercar la realidad del sector tecnológico a nuevos profesionales, combinando conocimiento práctico, visión de mercado y experiencia directa en procesos de transformación profesional.

Saber utilizar un sistema de control de versiones como Git otorga a los desarrolladores un control total sobre cada línea de código que escriben.

Una de las mayores ventajas de Git es su capacidad para actuar como una red de seguridad: cuando cometes un error en tu proyecto, existen herramientas precisas para deshacer y rehacer cambios en Git sin perder el control de la aplicación.

A lo largo de esta guía técnica profundizaremos en el funcionamiento de la herramienta, el uso de git commit --amend, las diferencias entre los modos de git reset, la alternativa moderna git restore, la seguridad de git revert y la salvación de emergencia con git reflog.


Entendiendo las tres zonas de Git antes de deshacer cambios

Para aplicar correctamente cualquier comando git de reversión, es necesario comprender la arquitectura interna de un repositorio local, la cual se divide en tres estados o zonas principales:

  • Directorio de trabajo (Working Directory): La carpeta donde modificas y editas activamente tus archivos de código.
  • Área de preparación (Staging Area o Index): La zona intermedia donde organizas y confirmas los archivos mediante git add antes de guardarlos de forma definitiva.
  • Historial del repositorio (Repository / HEAD): La base de datos donde se almacenan las confirmaciones permanentes (commits).

Imagina que el historial de git es como un diario de viaje. Cada confirmación (commit) es una página grabada. Deshacer un cambio implica decidir si quieres modificar la última página escrita, sacar elementos del borrador o redactar una página nueva que cancele el contenido de una anterior.

1. Rehacer el último commit con git commit –amend

¿Alguna vez has confirmado un commit y segundos después te has dado cuenta de que olvidaste incluir un archivo o escribiste mal el mensaje de confirmacion?

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

El comando git commit --amend permite modificar o rehacer el ultimo commit registrado en tu rama actual, combinando las nuevas modificaciones con la confirmación previa.

Ejemplo práctico de uso:

Resultado en el historial: Git reescribirá el último punto de guardado. En lugar de mostrar dos confirmaciones desordenadas, el registro limpio mostrará una sola confirmación como si el olvido nunca hubiera ocurrido.

2. Deshacer cambios en el área de preparación (Staging Area)

deshacer y rehacer cambios en Git

Si ejecutaste la instrucción git add . y preparaste por accidente archivos que no deseabas incluir en la próxima confirmación, puedes sacarlos del área de preparación sin perder tus modificaciones en el disco.

Método tradicional con git reset:

Método moderno con git restore (Git 2.23+):

Desde la versión 2.23 de Git, la comunidad introdujo la orden git restore para separar las responsabilidades ambiguas del antiguo checkout:

Este procedimiento es 100% seguro: no elimina las líneas de código editadas, simplemente las devuelve al estado no preparado (unstaged).

3. Descartar cambios no confirmados en un archivo modificado

Cuando has editado un archivo en tu directorio de trabajo y deseas revertirlo por completo a su estado original (descartando todas las modificaciones locales no guardadas):

Método clásico con git checkout:

Método moderno con git restore:

¡Atención técnica importante! Este comando destruye de forma permanente los cambios no confirmados en ese archivo específico. Utilízalo únicamente cuando estés seguro de que no necesitarás esa información.

4. Revertir commits de forma segura con git revert

Cuando un commit defectuoso ya ha sido confirmado y enviado a un repositorio remoto compartido (como GitHub o GitLab), reescribir el historial está desaconsejado porque causaría conflictos a tus compañeros de equipo.

El comando git revert es el aliado ideal para proyectos colaborativos: en lugar de borrar la página del historial, crea una nueva confirmación que aplica exactamente los cambios inversos.

El historial de Git se mantiene intacto y transparente, añadiendo un commit explícito que indica la neutralización del fallo previo.

5. Mover el puntero de la rama con git reset: Soft, Mixed y Hard

La orden git reset permite mover el puntero de la rama actual (HEAD) hacia un commit anterior. Su comportamiento varía según el flag de ejecución utilizado:

Tabla comparativa de los modos del comando git reset
Modo de Git Reset Estado de la zona de Staging Estado del Directorio de Trabajo Escenario de uso ideal
git reset --soft HEAD~1 Conserva los cambios preparados. No modifica ningún archivo. Deshacer una confirmación para reagrupar cambios antes de un nuevo commit.
git reset --mixed HEAD~1 (Por defecto) Elimina los cambios del área de preparación. Conserva las modificaciones en los archivos del disco. Deshacer la preparación y la confirmación para reorganizar el trabajo local.
git reset --hard HEAD~1 Borra el área de preparación. Elimina de forma permanente las modificaciones de los archivos. Descartar por completo todo el trabajo realizado desde la confirmación indicada.

6. Salvación de emergencia: Recuperar commits perdidos con git reflog

Si ejecutaste accidentalmente un git reset --hard y crees que has perdido confirmaciones de código importantes, Git mantiene una bitácora secreta llamada reflog.

El registro git reflog guarda todos los movimientos realizados por el puntero HEAD en tu máquina local durante los últimos 90 días, permitiéndote resucitar commits huérfanos:

Buenas prácticas indispensables para la gestión del historial

Para mantener tu flujo de desarrollo limpio y profesional, aplica estas recomendaciones cotidianas:

  • Evita reescribir el historial en ramas públicas: Nunca utilices git reset --hard ni git commit --amend sobre ramas remotas compartidas (como main o develop).
  • Confirma cambios con frecuencia: Realizar pequeñas confirmaciones atómicas facilita aislar y revertir fallos específicos sin afectar a otras áreas de la aplicación.
  • Redacta mensajes descriptivos: Detallar el motivo de las modificaciones simplifica la identificación de confirmaciones problemáticas en el futuro.

Cómo conectar el dominio de Git con tu futuro laboral

Controlar las herramientas de control de versiones y saber reaccionar ante errores de código es una competencia básica requerida en cualquier equipo informático.

Si estás organizando tu plan de estudio desde cero, te invitamos a consultar nuestra guía sobre qué aprender primero en programación.

Comprender cómo interactúan las capas de desarrollo analizando la diferencia entre frontend, backend y full stack te dará la perspectiva idónea para estructurar tus proyectos.

Durante la construcción de tus aplicaciones, administrarás tus repositorios sabiendo qué es Git y por qué es tan importante para trabajar en equipo.

A nivel de persistencia de datos en el servidor, garantizarás la consistencia comprobando qué es ACID en bases de datos.

En organizaciones avanzadas que automatizan sus procesos de despliegue, este aprendizaje se conecta directamente con comprender qué es MLOps y por qué es clave en ingeniería de software.

Para aquellos desarrolladores que buscan especializarse en la gestión de infraestructura en la nube y automatización de servidores, recomendamos explorar el Programa Técnico Avanzado en DevOps con IA y LLMops.


Conclusión

Dominar los comandos para deshacer y rehacer cambios en Git no solo te salva de cometer errores graves, sino que optimiza tu flujo de trabajo y la colaboración con tu equipo.

Saber cuándo aplicar amend, restore, reset o revert te proporcionará la confianza necesaria para experimentar y construir código de alta calidad.

Aprender las mejores prácticas de desarrollo con el acompañamiento de expertos en activo es el acelerador más potente para consolidar tu perfil profesional.

Bootcamp Aprende a Programar desde Cero de KeepCoding

Si quieres aprender a programar desde cero, dominar el control de versiones con Git y GitHub, maquetar tus propios proyectos reales y contar con el respaldo de nuestra Bolsa de Talento activa, descubre el Bootcamp Aprende a Programar desde Cero de KeepCoding y transforma tu futuro profesional hoy mismo.

Asimismo, para consultar la guía oficial de referencia sobre la herramienta, puedes acceder al apartado de documentación oficial de Git sobre deshacer cosas.

Noticias recientes del mundo tech

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Clases en Directo | Acceso a +600 empresas | 98,51% empleabilidad

Descárgate también el informe de tendencias en el mercado laboral 2026.

Fórmate con planes adaptados a tus objetivos y logra resultados en tiempo récord.
KeepCoding Bootcamps
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.