Saltar al contenido
GitTree
Historia y recuperación

Editar historial con una rebase interactiva

Una rebase interactiva reescribe las confirmaciones encima de una elegida: mantener, reformular, editar, aplastar, arreglar o soltar cada una y arrastrarlas a un nuevo orden, como git rebase -i. Para un solo cambio, Edit History en el menú de confirmación lo hace en un solo paso.

GratisActualizado

Funciona en GitTree Gratis: todas las funciones locales de Git, una vez que hayas iniciado sesión.

En esta página
  1. Antes de empezar
  2. donde encontrarlo
  3. Pasos
  4. Resultado esperado
  5. Qué hace cada acción
  6. Si algo sale mal
  7. Preguntas
  8. Relacionado

Antes de empezar

  • Las confirmaciones para reescribir están en su rama actual, sin ninguna confirmación de fusión entre ellas.
  • Prefiere confirmaciones que no hayas enviado: las confirmaciones reescritas obtienen nuevos identificadores.

donde encontrarlo

  • Haga clic derecho en la confirmación justo debajo de las que desea cambiar: Edit History › Interactive Rebase of the Commits Above….
  • Ediciones en un solo paso en el mismo menú Edit History: Edit Commit Message…, Drop Commit…, Move Commit Up y Move Commit Down.
  • Seleccione varias confirmaciones y luego haga clic derecho: Squash Commits….
acciónmacOSWindows y Linux
Undo toda la rebase⌘ZCtrl+Z

Pasos

  1. Abre el editor

    Haga clic derecho en la confirmación debajo de las que desea cambiar y elija Edit History › Interactive Rebase of the Commits Above…. La confirmación más antigua está en la parte superior, en el orden en que se reproducen.

    Animación: se abre el editor de rebase interactivo, una confirmación está configurada en Squash y otra en Reword
    Cada paso tiene una acción; aquí una confirmación se combina con la anterior y otra se reformula.GitTree interfaz con un repositorio de demostración.
  2. Elija una acción para cada confirmación

    Establezca Action en cada paso: Pick lo conserva, Reword cambia su mensaje, Edit se detiene allí para que pueda modificarlo, Squash y Fixup lo incorpora a la confirmación anterior, Drop lo omite.

  3. Reordenar si es necesario

    Arrastre un paso por su controlador o céntrelo y presione Alt+ ↑ o Alt+↓. Las letras también funcionan: p, r, e, s, f y d marcan las acciones.

  4. Iniciar la rebase

    Presione Start Rebase. Si algunas confirmaciones ya están en un control remoto, confirme reescribirlas primero. GitTree dice Rebase finished. Undo can put the branch back.

Resultado esperado

La rama contiene las confirmaciones reescritas, con nuevos identificadores. La antigua sucursal se mantiene en refs/ogt/trash.

Qué hace cada acción

Acciones interactivas de rebase
acciónResultado
PickEl compromiso permanece como está.
RewordMismos cambios, nuevo mensaje que escribes en el editor.
EditLa rebase se detiene después de esta confirmación para que pueda modificarla y luego continuar desde el banner.
SquashDoblado en el compromiso anterior; Los mensajes se combinan.
FixupDoblado en el compromiso anterior; su propio mensaje es descartado. Fixup, use its message conserva el mensaje de este.
DropQuedado fuera de la sucursal.

Si algo sale mal

"Estas confirmaciones incluyen una fusión, por lo que sólo se pueden mostrar aquí, no reescribirlas".

La rebase interactiva en GitTree reescribe únicamente el historial lineal. Comience desde una confirmación encima de la fusión.

"Paso... se aplasta en la nada: muévalo debajo de un compromiso mantenido".

Una calabaza o una reparación necesita un compromiso encima para poder plegarse. Muévalo o cambie el primer paso a Seleccionar.

Preguntas

¿Cómo convierto varios commits en uno?

Selecciónelos en el gráfico y elija Squash Commits…: el diálogo de Squash muestra el resultado, el mensaje y los coautores primero. O establezca cada confirmación después de la primera en Squash o Fixup en el editor.