📱 Tutorial
Git tiene un comando oculto que reescribe el pasado sin romper tu repo — y nadie lo usa
Hace commits con mensajes horribles como "cambios" o "fix final final v2"? ¿Te da miedo hacer git rebase -i porque una vez dejaste tu repo en un estado zombie del que no supiste salir?
Tranquilo. A todo dev le ha pasado. Pero desde abril de este año, Git tiene un comando experimental que promete arreglar todo eso sin dejar tu árbol a medio romper. Se llama git history y casi nadie sabe que existe.
¿Qué es git history y por qué debería importarte?
Es un comando nuevo que llegó en dos tandas: Git 2.54 (abril 2026) trajo reword y split; Git 2.55 (junio 2026) agregó fixup. En conjunto, te permiten reescribir commits antiguos sin el pánico de un rebase interactivo mal hecho.
El autor — Lalit Maganti, un ingeniero que pasó año y medio probando jj (Jujutsu, el VCS alternativo de moda) sin terminar de convencerse — lo describe como el 80% de los beneficios de jj pero sin necesitar instalar ni aprender nada nuevo.
¿La clave? git history es atómico. O funciona completo, o no hace nada. Nunca deja tu repo a medio reescribir.
Los 3 superpoderes de git history
1. git history fixup — arregla commits viejos sin llorar
Imagina que tienes 4 commits (A → B → C → D) en dos ramas, y el commit B tiene un bug. Con git history fixup B:
- Haces
git addcon la corrección - Ejecutas
git history fixup B - Git mete el fix dentro de B, reescribe C y D encima, y mueve las ramas automáticamente
Sin conflictos. Sin estados intermedios rotos. Sin comandos mágicos.
Es como git commit --fixup + autosquash, pero con el extra de que también mueve otras ramas que contengan ese commit. Algo que ni git rebase --update-refs hace bien.
2. git history reword — cambia mensajes como si nada
¿Subiste un commit con el mensaje "arreglo" y luego te dio vergüenza? Con git history reword B se abre tu editor con el mensaje actual, lo editas, guardas, y Git reconstruye todo encima.
Lo mejor: ni toca tu índice ni tu working tree. Puedes reescribir un mensaje en otra rama sin perder lo que tienes a medio hacer.
3. git history split — parte un commit en dos quirúrgicamente
El más especializado, pero oro puro cuando lo necesitas. Agarras un commit que mezcló dos cambios distintos, ejecutas git history split B, y Git te muestra el diff hunk por hunk. Los hunks que aceptas van al primer commit, los que rechazas al segundo. Así de simple.
Sin rebase -i. Sin reordenar manual. Sin errores.
¿Y esto versus jj?
jj (Jujutsu) es el darling de Hacker News: trata los conflictos como first-class citizens, tiene un operation log que te deja deshacer cualquier cosa, y es ideal para flujos con muchas ramas paralelas. Pero: requiere instalar otra herramienta, aprender otros comandos, y para muchos equipos, convencer a tu lead de migrar es misión imposible.
git history no reemplaza a jj — es menos potente (no maneja conflictos como jj). Pero si estás en un equipo que ya usa Git y no va a cambiar, te da el 80% de los beneficios sin friction.
Los propios docs de Git lo admiten: "Esta limitación es por diseño… pero podría levantarse cuando Git aprenda conflictos de primera clase". Es decir: esto apenas empieza.
¿Cómo empiezo a usarlo hoy?
No necesitas instalar nada. git history ya viene con Git 2.54+. Solo actualiza Git:
# En Linux/macOS
git --version # debe ser ≥ 2.54
# En Windows
git update-git-for-windows
# Ya está. Pruébalo en un repo de prueba:
git history reword HEAD~3
⚠️ Advertencia: es experimental. No lo uses en commits que ya hayas subido a tu equipo sin coordinarte. Como todo rewrite de historia, si alguien ya trabajó sobre ese commit, vas a tener problemas.
El veredicto
git history no va a reemplazar a jj para los hardcore fans de VCS alternativos. Pero para el 90% de los devs que usan Git todos los días y quieren editar commits sin miedo, es un regalo caído del cielo.
Y lo mejor: ya lo tienes instalado. Solo necesitas saber que existe.
Comparte esto con ese compañero que todavía escribe "final final v3 definitivo" como mensaje de commit.
¿Tú qué usas? ¿git rebase -i a pelo, jj, o ya probaste git history? Cuenta en los comentarios 👇