Extensiones de Git: ¿compromisos de Squash?

4 minutos de lectura

Para aplastar múltiples confirmaciones, siempre he usado:

git reset --soft HEAD~<number of commits to squash> && git commit

Pero me pregunto si hay una buena manera de hacer esto en un buen cliente de git como las extensiones de git. Sería genial si pudieras seleccionar confirmaciones consecutivas y aplastarlas.

  • Lo hago usando TortouseGit, muy conveniente

    – Alexán

    13 oct 2017 a las 15:43

avatar de usuario
RussKie

Hay múltiples formas de hacer un squash.

Así es como puede aplastar fácilmente la corriente y todos sus padres inmediatos se comprometen en un solo compromiso en Extensiones Git:

  1. Haga clic derecho en una confirmación que desee aplastar y seleccione “Restablecer la rama actual aquí”
  2. Seleccione “Reinicio suave” (conservar archivos preparados) o “Restablecimiento mixto” (desinstalar todos los archivos)
  3. Etapa, si es necesario
  4. Comprometerse

Aquí hay una animación de lo anterior:

ingrese la descripción de la imagen aquí


Otra forma es hacer un “rebase interactivo” ya sea

  • a través de una línea de comando (git rebase -i, leer documentos), o
  • a través de la interfaz de usuario (por ejemplo, Git Extensions).

Para hacer una reorganización interactiva en Git Extensions:

  1. Haga clic con el botón derecho en una confirmación que desee aplastar y seleccione “Reorganizar la rama actual en > Confirmación seleccionada de forma interactiva…”
  2. En el cuadro de diálogo presentado, modifique el historial, como elegir qué se compromete a aplastar o reformular
  3. Guardar y cerrar

Aquí hay una animación de lo anterior:

ingrese la descripción de la imagen aquí

  • suave resetear es más lo que se pide 😉

    – Felipe

    15 mayo 2018 a las 22:26

  • Gran respuesta, muy útil. Sería una gran idea ralentizar un poco el gif animado si es posible… 😉

    – Pierre FABIER

    25 de junio de 2018 a las 11:24


  • 1. Haga clic con el botón derecho en una confirmación que desee aplastar y seleccione “Restablecer la rama actual aquí”. 2. Seleccione “Reinicio parcial” (conservar los archivos preparados) o “Restablecimiento mixto” (quitar todos los archivos) 3. Preparar, si necesario 4. Comprometerse

    – Russ Kie

    26 de junio de 2018 a las 12:11


  • Tenga en cuenta que podría perder algunos archivos que están en git ignore si los agregó usando git add -f. Tendrás que volver a añadirlos manualmente

    – asaf92

    6 de diciembre de 2018 a las 14:59

  • @PierreFABIER Extensiones de Chrome para pausar los gifs: superusuario.com/a/1435047/930939

    – RazvanR

    27 de enero de 2020 a las 9:07


Aquí está la versión más lenta de la respuesta aceptada:

Aquí está la versión más lenta de la respuesta aceptada

  • Gracias por compartir esto, he reemplazado su versión superrápida con tu versión lenta.

    – Tim Schmelter

    16 de enero de 2020 a las 12:30

  • Extensiones de Chrome para pausar los gifs: superusuario.com/a/1435047/930939

    – RazvanR

    27 de enero de 2020 a las 9:07


(Suponiendo que estás usando Windows)

Si, yo creo TortugaGit puede hacerlo. Como usuario anterior de TortoiseSVN, lo recomendaría. Al ver el registro de confirmación, puede hacer lo siguiente:

Combina el menú contextual de varias confirmaciones

Además, cuando se comprometa con TortoiseGit, tendrá la opción de simplemente enmendar su confirmación anterior, para que pueda hacer esto sobre la marcha. También obtendrá el último mensaje de confirmación cuando haga esto (borré el mío por razones de privacidad en la captura de pantalla).

Modificar última confirmación

Por supuesto, estoy seguro de que ya lo sabe, pero no intente combinar o modificar las confirmaciones que ya se enviaron a remoto, o su próximo intento fallará miserablemente.

Como beneficio adicional, obtendrá los beneficios de los íconos superpuestos cuando explore su copia de trabajo en Explorer.

Iconos del explorador

  • Esto es más fácil que la extensión git

    – liang

    9 de octubre de 2018 a las 7:56

  • ¡Estaría de acuerdo! Intenté usar Git Extensions, pero prefiero tener una integración nativa con Explorer.

    – Cerebro de Boffin

    11 de octubre de 2018 a las 6:44

  • Pero tenga en cuenta que la forma en que GitExtensions presenta la función es más similar a la forma en que lo hace Git. Así que si entiendes uno, deberías ser capaz de entender el otro…

    – Felipe

    16 de abril de 2019 a las 9:24

avatar de usuario
Felipe

Puede lograr esto fácilmente con GitExtensions de 2 maneras.

El primero es hacer exactamente lo mismo pero desde la GUI, lo cual es adecuado cuando no desea utilizar los mensajes de confirmación existentes de las confirmaciones que observa para aplastar. .

 git reset --soft HEAD~<number of commits to squash>

Desde el navegador de historial de GitExtensions, haga clic con el botón derecho en la última confirmación que desea conservar y seleccione ‘restablecer rama aquí’. Luego seleccione la opción ‘suave’.

 git commit

A continuación, confirme los cambios que todavía están preparados.

los segundo es a un ‘rebase –interactive’:

Haga clic con el botón derecho en la misma confirmación descrita anteriormente y seleccione ‘rebase on’. En la ventana emergente, marque la casilla de verificación ‘interactivo’.

Luego, en el editor, establezca la acción de confirmación en ‘squash’. Lea una buena documentación sobre el rebase interactivo antes de hacerlo. Esta solución es perfecta cuando desea escribir un buen mensaje de confirmación creado a partir de los mensajes de confirmación de las confirmaciones que está aplastando.

¿Ha sido útil esta solución?