Saltar al contenido
GitTree

guías de git

Rebase interactivo de Git en una GUI: aplastar, arreglar, reformular, reordenar y eliminar confirmaciones

Cómo aplastar, arreglar, reformular, reordenar y eliminar confirmaciones con una GUI de rebase interactiva, qué hace cada acción en git rebase -i y cómo deshacer un rebase que salió mal.

Escrito por KodmoraActualizado 15 minutos de lectura
GitTree editor de rebase interactivo con pasos de selección, aplastamiento y reformulación

Una GUI de rebase interactiva le permite reescribir las confirmaciones en su rama desde una lista en lugar de un archivo de texto: elija una confirmación inicial, asigne una acción a cada confirmación anterior (seleccionar, aplastar, corregir, reformular, editar o soltar), arrástrelas a un nuevo orden y deje que Git las reproduzca. Ejecuta la misma operación que git rebase -i, por lo que el resultado es idéntico a la línea de comando. En GitTree, haga clic con el botón derecho en la confirmación justo debajo de las que desea cambiar, elija Rebase interactiva de las confirmaciones anteriores..., establezca las acciones y haga clic en Start Rebase. Si el resultado es incorrecto, Deshacer devuelve la rama.

Este tutorial interactivo de rebase cubre cada acción, tres formas de aplastar las confirmaciones, los comandos coincidentes, la autosquash y la red de seguridad. Las capturas de pantalla muestran el editor de rebase interactivo de GitTree, un cliente Git para macOS, Windows y Linux, pero el comportamiento de Git es el mismo en cualquier herramienta.

Qué hace el rebase interactivo de Git y cuándo usarlo

Una rebase normal mueve una serie de confirmaciones a una nueva base. Una rebase interactiva también te permite editar esa serie en el camino: Git muestra las confirmaciones que está a punto de reproducir, cambias la lista y Git reconstruye la rama para que coincida. Cada confirmación reescrita obtiene una nueva identificación, razón por la cual la rebase interactiva pertenece a la etapa anterior a compartir su trabajo. Razones típicas para alcanzarlo:

  • Aplaste una serie de confirmaciones de "wip", "corregir errores tipográficos" y "revisión de direcciones" en una confirmación significativa antes de abrir una solicitud de extracción.
  • Vuelva a redactar un mensaje de confirmación que tenga un error tipográfico, un número de ticket faltante o un resumen vago.
  • Incorpora un cambio olvidado a la confirmación a la que pertenece, de modo que cada confirmación se desarrolle por sí sola.
  • Reordene las confirmaciones para que una refactorización llegue antes de la característica que depende de ella.
  • Elimine una confirmación de depuración o un experimento que nunca debería llegar a la rama principal.

Seleccionar, aplastar, arreglar, reformular, editar y soltar: las acciones de rebase explicadas

Cada línea en un plan de rebase interactivo es una confirmación más una acción. Estos son los que usarás día a día (el archivo de tareas pendientes de Git tiene algunos más para secuencias de comandos, como exec y break):

Acciones de rebase interactivas, qué hace Git con cada una y sus claves en GitTree
acciónIntroduzca GitTree¿Qué hace Git?Úselo para
escogerpagMantiene el compromiso como está.Deje una confirmación en paz (el valor predeterminado).
reformularrMantiene los cambios y te permite escribir un nuevo mensaje.Corrija un error tipográfico o un resumen vago.
editarmiVuelve a reproducir la confirmación y luego se detiene para que puedas modificarla.Divida una confirmación o cambie sus archivos.
calabazasCombina el compromiso con el anterior y combina ambos mensajes.Únase a compromisos relacionados y guarde sus notas.
arreglofCombina la confirmación con la anterior y conserva solo el mensaje anterior.Doblar en una pequeña solución en silencio.
reparación -CMenú de acción: "Reparación, usa su mensaje"Me gusta la reparación, pero en su lugar mantiene el mensaje de esta confirmación.Reemplace el mensaje anterior junto con la solución.
soltarreDeja el compromiso fuera de la rama.Eliminar una confirmación de depuración o experimental.

El orden importa, y es lo opuesto a `git log`. El plan enumera las confirmaciones más antiguas en la parte superior, en orden de reproducción, mientras que git log y la mayoría de los gráficos de confirmaciones muestran las más recientes primero. Un squash o fixup siempre se fusiona con el commit directamente encima, el más antiguo. Si una calabaza termina en la parte superior sin nada donde doblarse, GitTree se niega a comenzar hasta que la muevas debajo de un compromiso que mantengas.

El equivalente de la línea de comandos: git rebase -i

En la línea de comando, nombre la confirmación justo debajo de las que desea cambiar: cuente hacia atrás desde HEAD, o use el punto donde su rama dejó main.

# rewrite the last 5 commits
git rebase -i HEAD~5

# rewrite everything since the branch left main, without moving its base
git rebase -i $(git merge-base main HEAD)

Git abre tu editor con una lista de tareas pendientes. Este es el mismo plan que la captura de pantalla más abajo: la segunda confirmación se combina con la primera y la cuarta recibe un mensaje nuevo.

pick f2cd67d chore(deps): upgrade Next.js and React
squash 19a1104 ci: cache pnpm store and run tests in parallel
pick f52edc8 refactor(api): extract repository layer from handlers
reword 05dfac2 feat(api): rate limit public endpoints
pick bf2385e fix(web): focus trap in the invite dialog

Guarde y cierre el archivo y Git comenzará a reproducirlo. Solicita el mensaje de aplastamiento y el mensaje reformulado, y se detiene en cualquier edit paso o conflicto, donde continúas o te rindes:

git rebase --continue   # after amending or resolving a conflict
git rebase --abort      # stop and put the branch back where it was

Una GUI cambia la forma en que escribes el plan, no lo que Git hace con él. GitTree ejecuta el mismo plan con Git ya instalado en su computadora (versión 2.39 o posterior), por lo que la aplicación y una terminal producen las mismas confirmaciones. Para conocer las compensaciones más amplias, lea Git GUI vs línea de comando.

Cómo hacer un rebase interactivo en una GUI: GitTree paso a paso

  1. Revisa la sucursal y ordena la copia de trabajo.

    Revisa la sucursal que deseas limpiar. Confirme o guarde primero los cambios no confirmados, o marque la opción que los guarda para esta rebase y los devuelve después.

  2. Abra el editor desde la confirmación base

    En el gráfico de confirmación, haga clic con el botón derecho en la confirmación justo debajo de la más antigua que desea cambiar y elija Rebase interactiva de las confirmaciones anteriores.... Para pasar a otra rama al mismo tiempo, haga clic derecho en esa rama y elija Rebase interactivo de la rama actual en esta....

  3. Elija una acción para cada confirmación

    Utilice el menú en cada fila, o enfoque una fila y presione p, r, e, s, f o d para seleccionar, reformular, editar, aplastar, arreglar o soltar.

  4. Reordenar arrastrando o usando el teclado

    Arrastre una fila por su controlador, o céntrela y presione Alt+ ↑ o Alt+↓, hasta que las confirmaciones estén en el orden que desee.

  5. Escribe los nuevos mensajes.

    Una fila de reformulación abre un cuadro de mensaje en su lugar. Cada grupo aplastado aparece debajo de la lista con su mensaje combinado, listo para editar, para que pueda ver la confirmación resultante antes de comenzar.

  6. Comprueba las opciones y comienza.

    Elija si desea guardar los cambios locales, mover las ramas que apuntan a estas confirmaciones (referencias de actualización) y organizar la reparación. confirma (autosquash). Confirme si algunas confirmaciones ya están en un control remoto y luego haga clic en Start Rebase.

  7. Continuar, cancelar o deshacer

    Si un paso se detiene debido a una edición o un conflicto, el banner ofrece Continuar Rebase y Anular Rebase. Cuando finaliza la rebase, Deshacer devuelve toda la rama.

Editor de rebase interactivo de GitTree: la confirmación más antigua en la parte superior, una acción por confirmación (aquí una calabaza y una nueva redacción con su nuevo mensaje escrito en su lugar), arrastre los controladores para reordenar y Start Rebase para ejecutar el plan.
Editor de rebase interactivo de GitTree: la confirmación más antigua en la parte superior, una acción por confirmación (aquí una calabaza y una nueva redacción con su nuevo mensaje escrito en su lugar), arrastre los controladores para reordenar y Start Rebase para ejecutar el plan.

Cómo aplastar confirmaciones en una GUI de Git

La respuesta corta a cómo aplastar confirmaciones: colóquelas una al lado de la otra, deje la primera como selección, marque el resto como aplastada o reparada y vuelva a jugar. GitTree te ofrece tres formas de llegar allí.

Aplasta un grupo de confirmaciones en el editor de rebase

Abra el editor desde la confirmación debajo del grupo, configure su primera confirmación para seleccionar y las demás para aplastar o arreglar si no desea sus mensajes. Arrastre los compromisos callejeros a su lugar si el grupo no es contiguo. GitTree muestra una vista previa de cada grupo que contiene una calabaza como la confirmación en la que se convertirá, con el mensaje combinado en un cuadro que puedes editar.

Seleccione confirmaciones en el gráfico y elija Squash Commits.

Para un squash rápido, seleccione dos o más confirmaciones consecutivas de la rama actual en el gráfico, haga clic derecho y elija Squash Commits. GitTree ejecuta la rebase por usted y Deshacer puede devolver las confirmaciones separadas. El mismo menú reescribe confirmaciones individuales en un solo paso: Editar mensaje de confirmación…, Eliminar confirmación…, Mover confirmación hacia arriba y Mover confirmación hacia abajo. Estos atajos funcionan en confirmaciones que aún no están en un control remoto; para confirmaciones enviadas, use el editor, que le pedirá que confirme primero.

Aplastar cuando fusiones la solicitud de extracción

Si su equipo mantiene una confirmación por solicitud de extracción, es posible que no necesite reescribir la rama en absoluto: la vista de solicitud de extracción de GitTree puede fusionarse con squash y su sucursal local permanece como estaba.

Haga clic con el botón derecho en cualquier confirmación en el gráfico de GitTree para la rebase interactiva de las confirmaciones anteriores..., además de reescrituras de un solo paso: Editar mensaje de confirmación..., Eliminar confirmación..., Mover confirmación hacia arriba y Mover confirmación hacia abajo.
Haga clic con el botón derecho en cualquier confirmación en el gráfico de GitTree para la rebase interactiva de las confirmaciones anteriores..., además de reescrituras de un solo paso: Editar mensaje de confirmación..., Eliminar confirmación..., Mover confirmación hacia arriba y Mover confirmación hacia abajo.

Confirmaciones de reparación y autosquash: corrige una confirmación antigua sin reordenarla manualmente

Mientras trabaja, confirme cada pequeña corrección como una corrección de la confirmación a la que pertenece; Git lo titula fixup! <original title>. Más tarde, una rebase interactiva con autosquash mueve cada reparación directamente debajo de su objetivo y la marca como reparación, por lo que todo lo que debe hacer es verificar la lista y comenzar.

# record a correction for an earlier commit
git commit --fixup=05dfac2

# correct the commit and replace its message too
git commit --fixup=amend:05dfac2

# later: fold every fixup! and amend! commit into its target
git rebase -i --autosquash main

# turn autosquash on for every interactive rebase
git config --global rebase.autoSquash true

En GitTree, ejecute esos comandos en la terminal integrada acoplada debajo del gráfico, o escriba fixup!, un espacio y el título original en el cuadro de mensaje de confirmación; Git busca correcciones por título, por lo que ambos crean la misma confirmación. Con ¡Organizar arreglo!, ¡aplasta! y enmendar! Comprueba la opción activada, el editor se abre ya organizado y lo que ves es exactamente lo que ejecuta Git.

Una confirmación amend! se convierte en fixup -C en el plan ("Reparación, usa su mensaje" en GitTree): sus cambios se incorporan y su mensaje reemplaza al del objetivo. Según la documentación de git-commit, ningún tipo cambia quién fue el autor de la confirmación original.

¿Es seguro el rebase interactivo? Deshacer, reflog y forzar con arrendamiento

Una rebase no elimina las confirmaciones antiguas de inmediato: permanecen accesibles desde el reflog hasta que la recolección de basura de Git borra los objetos inalcanzables mucho más tarde. Los riesgos reales son perder el rastro de la antigua sucursal y sobrescribir el trabajo de un colega en el control remoto.

Deshacer una rebase terminada

GitTree toma una instantánea de la rama antes de cada rebase, por lo que Deshacer en la barra de herramientas la devuelve con un solo clic, incluidas otras ramas que la rebase movió con update-refs, siempre y cuando nada haya movido la rama desde entonces. Cómo deshacer un reinicio, rebase o confirmación de git cubre el resto de esa red de seguridad. En la línea de comando:

# still in the middle of the rebase
git rebase --abort

# already finished: go back to the tip from before the rebase
git reflog show --date=relative
git reset --hard ORIG_HEAD

Git establece ORIG_HEAD en el consejo anterior cuando comienza una rebase, pero una ejecución git reset durante la rebase (para dividir una confirmación, por ejemplo) lo mueve. Justo después de la rebase, @{1}, la posición anterior de la rama actual, todavía apunta a la punta anterior, por lo que git reset --hard @{1} también funciona. git reset --hard descarta los cambios no confirmados, así que confírmalos o guárdalos primero.

Reescribir confirmaciones que ya has presionado

GitTree etiqueta las confirmaciones que ya están en un control remoto con "En un control remoto" y le pide que confirme antes de reescribirlas. Después se rechaza un empujón normal, por lo que es necesario un empujón forzado. Utilice el formulario de arrendamiento, que solo sobrescribe la sucursal remota si todavía apunta al lugar donde la vio por última vez:

git push --force-with-lease

# safer when something fetches in the background
git push --force-with-lease --force-if-includes

Una recuperación en segundo plano puede actualizar su rama de seguimiento remoto y debilitar el contrato de arrendamiento, por lo que la documentación de git-push sugiere agregar --force-if-includes. En GitTree, un envío forzado siempre usa --force-with-lease, anclado a la sugerencia remota que se muestra cuando confirma, y ​​esa sugerencia se mantiene localmente en refs/ogt/trash, por lo que las confirmaciones que elimina del control remoto no se pierden. Deshacer no puede revertir un impulso forzado porque cambió el control remoto.

Cuando un paso se detiene: ediciones y conflictos

Un paso edit, o una confirmación que ya no se aplica limpiamente, detiene la rebase. GitTree muestra el progreso del plan y un banner para continuar o cancelar. Los conflictos se abren en el editor de tres vías, cubierto en resolver conflictos de fusión en una GUI. Durante un rebase, Git intercambia los lados de una fusión: "nuestro" es la rama en la que está rebasando y "de ellos" es su propia confirmación, por lo que GitTree los etiqueta como "rebasando" y "su confirmación". La lección Continuar, omitir o cancelar una operación activa practica cada elección y, para copiar una única confirmación en lugar de reescribir una rama, consulte cherry-pick.

Consejos para un historial de confirmaciones limpio antes de una solicitud de extracción

  • Realice cada compilación de confirmación y pase sus pruebas por sí sola, y mantenga separados los cambios no relacionados: una confirmación para la refactorización, otra para la característica.
  • Vuelva a basarse en el último main antes de abrir la solicitud de extracción, para que los revisores solo vean sus cambios.
  • ¿Trabajar con ramas apiladas? Active update-refs para que las ramas creadas en la suya se muevan con las confirmaciones reescritas.
  • Si el rango contiene una confirmación de fusión, GitTree la muestra pero no la reescribe; use git rebase -i --rebase-merges para ese caso.
  • Verifique el resultado en el gráfico de confirmación antes de presionar y deje que su propia CLI de codificación de IA redacte los mensajes, como en mensajes de confirmación de IA con Claude Code y Codex.
  • Practique primero en un repositorio desechable con la lección gratuita Rebase de trabajo no publicado en una nueva base.

GitTree tiene un plan gratuito que cubre todas las funciones de Git, incluidos los repositorios privados, en macOS, Windows y Linux, en English and Arabic; Nour, el asistente de IA, viene con GitTree Pro (consulte precios). Necesita Git 2.39 o más reciente y una cuenta GitTree para iniciar sesión. Consígala desde la página de descarga o compare los mejores clientes de GUI de Git primero.

Preguntas frecuentes

¿Cuál es la diferencia entre squash y fixup en git rebase?

Ambos combinan una confirmación con la que está encima en el plan de rebase, por lo que los dos conjuntos de cambios terminan en una sola confirmación. Squash combina ambos mensajes de confirmación y le permite editar el resultado, mientras que fixup conserva solo el mensaje de confirmación anterior y descarta el posterior. Fixup -C hace lo contrario y conserva el mensaje posterior.

¿Cómo aplasto mis últimas 3 confirmaciones?

En la línea de comando, ejecute git rebase -i HEAD~3, deje la primera línea como selección, cambie las otras dos para aplastar o arreglar, guarde y edite el mensaje combinado. En GitTree, haga clic derecho en la cuarta confirmación desde la parte superior de su rama, elija Rebase interactiva de las confirmaciones anteriores, configure las dos confirmaciones más nuevas para aplastar y haga clic en Start Rebase. Si las tres confirmaciones aún no están en un control remoto, también puede seleccionarlas y elegir Squash Commits.

¿Cómo deshago una rebase interactiva?

Si la rebase aún se está ejecutando, deténgala con git rebase --abort o el botón Abortar Rebase en el banner de GitTree. Si ya finalizó, use Deshacer en GitTree, que restaura la instantánea tomada antes de la rebase, o ejecute git reset --hard ORIG_HEAD en la línea de comando. El reflog enumera todas las posiciones anteriores de la sucursal si necesita una más antigua.

¿Es seguro cambiar la base de las confirmaciones que ya hice?

Es seguro en una rama que solo usted usa, siempre y cuando presione con git push --force-with-lease, que se niega a sobrescribir las confirmaciones que no ha visto. En una rama compartida, reescribir el historial obliga a todos los demás a reparar sus copias, así que primero acuerde con su equipo o aplaste cuando se fusione la solicitud de extracción en lugar de reescribir la rama.

¿GitTree admite la reparación? ¿Se compromete y se aplasta automáticamente?

Sí. Confirmaciones cuyos títulos comienzan con fixup!, squash! o modificar! se puede organizar automáticamente cuando se abre el editor de rebase interactivo, ya sea para un rebase único o de forma predeterminada a través de una preferencia que puede seguir su configuración de rebase.autoSquash. Aún verás la lista organizada antes de que se ejecute algo, y Git ejecuta exactamente esa lista.

¿Puedo hacer una rebase interactiva sin la línea de comando en macOS, Windows y Linux?

Sí. El editor de rebase interactivo de GitTree funciona de la misma manera en macOS, Windows y Linux: seleccione, reformule, edite, aplaste, corrija y suelte, con arrastrar y soltar o reordenar y deshacer con el teclado. La aplicación tiene un plan gratuito que cubre todas las funciones de Git (Nour, el asistente de IA, viene con GitTree Pro), funciona con una cuenta GitTree y utiliza Git ya instalado en su computadora, versión 2.39 o posterior.

¿Debo aplastar con una rebase interactiva o con una combinación de aplastamiento?

Utilice una rebase interactiva cuando deban sobrevivir varias confirmaciones significativas, limpiadas y en un orden sensato, o cuando los revisores lean una solicitud de extracción confirmación por confirmación. Utilice una combinación de calabaza cuando toda la solicitud de extracción deba aterrizar como una confirmación en la rama principal: deja su propia rama intacta y no necesita fuerza de empuje.

Fuentes

Las afirmaciones sobre otros productos se compararon con sus páginas oficiales el 22 de octubre de 2026. Los precios y las características cambian; Las páginas de los proveedores son la fuente de la verdad.