¿Cómo combinar un grupo de compromisos locales con un solo impulso en IDEA?

85

En IDEA estoy tratando de impulsar algunas confirmaciones.

Tengo el requisito de que en el servidor remoto parezca una sola acción.

Hago clic para empujar y veo la siguiente ventana ingrese la descripción de la imagen aquí

Esperaba ver la casilla de verificación de squash aquí, pero no la veo.

Por favor, ayúdame.

gstackoverflow
fuente
2
No se puede dar consejos de IDEA, pero el aplastamiento es parte de un rebase interactivo o una fusión, no un compromiso. Intente buscar allí.
musiKk

Respuestas:

115

Puedes hacerlo usando rebase. Vaya a VCS / Git / Rebase . Luego seleccione la opción Interactiva . Le mostrará una lista de confirmaciones, donde puede elegir cuáles desea aplastar.

Después de presionar Comenzar rebase, se le pedirá un mensaje de confirmación para la confirmación aplastada. Una vez hecho esto, puede enviar su confirmación aplastada utilizando el cuadro de diálogo de inserción.

Diálogo de squash

Más información sobre rebase en IntelliJ está aquí .

Bohuslav Burghardt
fuente
9
También puede ser útil leer este artículo de Git Tools - Reescritura del historial para saber qué ingresar en el campo "Onto" del diálogo "Rebase branch": por ejemplo, HEAD~3se puede usar para seleccionar las últimas 3 confirmaciones.
TmTron
cuando aplasta un montón de confirmaciones juntas, ¿se pierden los detalles individuales de cada una de esas confirmaciones? ¿Termina pareciendo un gran compromiso?
ycomp
@ycomp Sí, la rebase interactiva reescribe el historial, por lo que las confirmaciones individuales aplastadas se pierden y se crea una nueva en su lugar.
Bohuslav Burghardt
Gracias, ¿puedes deshacer una calabaza?
ycomp
@ycomp Nunca he hecho eso, pero debería ser posible. Consulte las siguientes publicaciones de SO: stackoverflow.com/q/10260151/1291150 , stackoverflow.com/q/134882/1291150
Bohuslav Burghardt
33

Hay una nueva forma:

Control de versiones -> Registro -> Haga clic con el botón derecho en la confirmación -> Interactively rebase from herey luego puede elegir seleccionar / aplastar el resto de las confirmaciones.

ValentinVoilean
fuente
1
El problema con este enfoque es que no hay forma de seleccionar "Squash" para múltiples confirmaciones y se vuelve tedioso hacerlo una por una.
Dmitry Serdiuk
4
@DmitrySerdiuk puede hacer clic en shift para seleccionar las confirmaciones que desea aplastar y luego hacer clic derecho -> seleccionar aplastar.
Aarjav
1
@Aarjav ¡OH DIOS MÍO, esto es exactamente, pensé que faltaba! No hay pistas sobre el menú contextual del cuadro de diálogo.
o_nix
21

Para mí, la forma más sencilla con intellij es:

  • Vaya a la Logpestaña y elija la confirmación desde la que desea aplastar
  • Haga clic derecho y seleccione Reset Branch to this commit
  • Elija las mixinopciones para mantener sus cambios de la confirmación
  • Confirme sus cambios y no olvide marcar la Amend commitopción
Oussama Zoghlami
fuente
1
De hecho, esta es la forma más sencilla y me parece la menos estresante y propensa a errores.
davrog10
2
Sugiero que en el paso 3 sería mejor elegir una Softopción en lugar de Mixedtener todos los cambios preparados para su confirmación.
provisota