Compromisos de calabaza
Squashing combina varias confirmaciones en una, como fixup o squash en git rebase -i. En GitTree cada calabaza abre primero el cuadro de diálogo Squash: muestra las confirmaciones que se pliegan, el resultado, el mensaje y quién recibe el crédito, y nada cambia hasta que usted confirma. Su trabajo no comprometido nunca se modifica y Undo devuelve las confirmaciones.
Funciona en GitTree Gratis: todas las funciones locales de Git, una vez que hayas iniciado sesión.
En esta página
Antes de empezar
- Las confirmaciones están en la rama que has retirado, en una línea continua. Una selección no puede contener una confirmación de fusión; Squash Branch… puede.
- Las confirmaciones aplastadas y todas las confirmaciones superiores a ellas obtienen nuevos identificadores. Si ya los empujaste, necesitarás un empujón fuerte después; El historial que contiene otra rama remota no se puede aplastar aquí.
donde encontrarlo
- Seleccione dos o más confirmaciones en el gráfico (presione Mayús y haga clic para ver un rango), haga clic derecho: Squash Commits….
- Haga clic derecho en una confirmación: Edit History › Squash into Parent… o Fixup into Parent….
- Haga clic derecho en la rama desprotegida en el gráfico o en el panel izquierdo: Squash Branch….
- Mantenga presionado
Alt(⌥en un Mac) y arrastre una confirmación a la confirmación justo encima o debajo de ella. - Haga clic con el botón derecho en una confirmación: Edit History › Create Fixup Commit… para confirmar lo que se presenta como una reparación.
- Cada uno de estos también se encuentra en la paleta de comandos y en la tarjeta Squash de la Guía de funciones.
| acción | macOS | Windows y Linux |
|---|---|---|
| Squash Commits… en la selección | ⌥S | Alt+S |
| Squash into Parent… para la confirmación seleccionada | ⌥Q | Alt+Q |
| Squash Branch… para la sucursal retirada | ⌥⇧B | Alt+Shift+B |
| Undo la calabaza | ⌘Z | Ctrl+Z |
Pasos
Abra el cuadro de diálogo de Squash
Utilice cualquier entrada anterior. El cuadro de diálogo lleva el nombre de lo que aplastas, por ejemplo Squash 3 Commits, Squash a1b2c3d into Its Parent o Squash Branch feature/login. Su línea de resumen dice así: "3 confirmaciones se convierten en 1 · 12 archivos · +240 −31 · mantiene la autoría de Ada".
Verifique las confirmaciones que se pliegan
Commits that fold enumera los más antiguos primero bajo Result: una confirmación escrita por el autor del más antiguo. Para Squash Branch…, Base: muestra dónde la rama dejó su base; Change… le permite escribir otra rama, etiqueta o confirmación, y el plan se realiza nuevamente.
Elige el mensaje
En Start the message from, elige Combine Messages, Oldest Message, Newest Message, List of Commits o Write My Own y luego edita el texto como quieras. Se requiere una línea de resumen.
Mantener acreditados a los demás autores.
Cuando otras personas escribieron algunas de las confirmaciones, Credit the other authors (Co-authored-by) agrega una línea
Co-authored-bypara cada una de ellas. Las líneas que agrega se enumeran debajo; Desmárquelo para dejarlos fuera.Lea qué más cambia y luego aplaste
What else changes dice cuántas confirmaciones anteriores obtienen nuevos identificadores (sus cambios permanecen iguales) y qué otras ramas o etiquetas mantienen las confirmaciones anteriores. Presione el botón de confirmación, como Squash 3 Commits o Squash into Parent.
Resultado esperado
GitTree dice, por ejemplo, 3 commits squashed into a1b2c3d. con un botón Undo y el gráfico muestra una confirmación donde había varias.
Sus cambios preparados y no preparados y sus archivos sin seguimiento son exactamente como eran: la calabaza nunca toca el árbol de trabajo.
Formas de aplastar
| Comando | que se pliega |
|---|---|
| Squash Commits… | Las confirmaciones que seleccionó, dos o más una al lado de la otra en la rama desprotegida. |
| Squash into Parent… | Un compromiso en el compromiso debajo de él. |
| Fixup into Parent… | Lo mismo, conservando solo el mensaje de los padres (como fixup en git rebase -i). |
| Squash Branch… | Cada confirmación de la rama desde que dejó su base, incluidas las fusiones, en una confirmación en esa base. |
Alt-arrastrar | El compromiso arrastrado y el vecino al que lo sueltas. La señal Drop to squash … muestra dónde puedes soltar; Esc cancela. |
Compromete que ya empujaste
Si la rama ascendente tiene las confirmaciones, el cuadro de diálogo lo indica y le pide que marque I will force push … after squashing antes de aplastarla. Luego, el mensaje ofrece Force Push…, que reemplaza la rama remota solo si todavía está donde la vio por última vez (force push).
Confirmaciones de reparación para más tarde
Para arreglar una confirmación anterior sin reescribir nada ahora, prepare el cambio y elija Create Fixup Commit… en esa confirmación. Elija Fixup (mantiene su mensaje), Squash (agrega una nota) o Amend (reemplaza su mensaje con New message). GitTree confirma una confirmación de fixup!, squash! o amend!; una rebase interactiva con Arrange fixup!, squash! and amend! commits lo pliega.
Las fusiones de Squash mantienen a sus autores
Cuando fusionas una rama con Squash into staged changes (no commit), un cuadro de confirmación vacío recibe un mensaje que enumera las confirmaciones que trae, con Co-authored-by líneas para sus autores. Se conserva un mensaje que ya escribiste.
Configuración
En Preferencias › General, Squash: starting message elige el mensaje con el que comienza el diálogo y Squash: credit co-authors establece si el crédito comienza marcado. Cada calabaza aún puede cambiar ambas.
Si algo sale mal
"Las confirmaciones no están una al lado de la otra. Seleccione una ejecución ininterrumpida".
Seleccione confirmaciones que se suceden en la rama desprotegida o use Squash Branch… para toda la rama.
"Una confirmación de fusión se retiraría. Squash Branch... se pliega y se fusiona; una selección no puede".
Utilice Squash Branch… o una rebase interactiva para elegir confirmación por confirmación.
"... contiene estas confirmaciones: son historia compartida y no se pueden eliminar aquí".
Otra sucursal remota los tiene. Déjelos como están o acuerde con su equipo antes de reescribir el historial compartido desde la línea de comando.
La calabaza se detiene con un error y un botón Review Again
Algo cambió la rama mientras el cuadro de diálogo estaba abierto, por lo que no se borró nada. Presiona Review Again para ver el nuevo plan y luego presiona nuevamente.
Preguntas
¿Cómo deshago una calabaza?
Presione Undo en el mensaje o en la barra de herramientas. GitTree mantuvo las confirmaciones antiguas en refs/ogt/trash antes de mover la rama, por lo que vuelven exactamente como estaban.
¿De quién es el nombre en el compromiso aplastado?
El autor del compromiso más antiguo que se pliega, con su fecha; usted es el comprometido. Activa Credit the other authors (Co-authored-by) para que todos los demás reciban crédito.
¿El aplastamiento ejecuta mis ganchos de confirmación o toca mis archivos de trabajo?
No. GitTree escribe las nuevas confirmaciones directamente, como lo hace git rebase internamente, y nunca cambia el índice o los archivos en su árbol de trabajo. Los firma cuando su configuración de Git solicita confirmaciones firmadas.