in

rebase – Aplaste mis últimas X confirmaciones juntas usando Git

apple touch icon@2

Gracias a esta útil publicación de blog Descubrí que puedes usar este comando para aplastar las últimas 3 confirmaciones:

git rebase -i HEAD~3

Esto es útil, ya que funciona incluso cuando se encuentra en una sucursal local sin información de seguimiento / repositorio remoto.

El comando abrirá el editor de rebase interactivo que luego le permite reordenar, aplastar, reescribir, etc. como de costumbre.


Usando el editor de rebase interactivo:

El editor de rebase interactivo muestra las últimas tres confirmaciones. Esta restricción fue determinada por HEAD~3 al ejecutar el comando git rebase -i HEAD~3.

El compromiso más reciente, HEAD, se muestra primero en la línea 1. Las líneas que comienzan con un # son comentarios / documentación.

La documentación que se muestra es bastante clara. En cualquier línea dada, puede cambiar el comando de pick a un comando de su elección.

Prefiero usar el comando fixup ya que esto «aplasta» los cambios de la confirmación en la confirmación en la línea anterior y descarta el mensaje de la confirmación.

Como el compromiso en la línea 1 es HEAD, en la mayoría de los casos dejaría esto como pick. No se puede utilizar squash o fixup ya que no hay otro compromiso para aplastar el compromiso.

También puede cambiar el orden de las confirmaciones. Esto le permite aplastar o arreglar las confirmaciones que no son adyacentes cronológicamente.

editor de rebase interactivo


Un ejemplo práctico de todos los días

Recientemente comprometí una nueva función. Desde entonces, he corregido dos errores. Pero ahora descubrí un error (o tal vez solo un error de ortografía) en la nueva función que cometí. ¡Que molesto! ¡No quiero que una nueva confirmación contamine mi historial de confirmaciones!

Lo primero que hago es corregir el error y hacer un nuevo compromiso con el comentario. squash this into my new feature!.

Luego corro git log o gitk y obtenga el SHA de confirmación de la nueva función (en este caso 1ff9460).

A continuación, abro el editor de rebase interactivo con git rebase -i 1ff9460~. los ~ después de la confirmación, SHA le dice al editor que incluya esa confirmación en el editor.

A continuación, muevo la confirmación que contiene la corrección (fe7f1e0) para debajo de la función confirmar y cambiar pick para fixup.

Al cerrar el editor, la corrección se comprimirá en la confirmación de la función y mi historial de confirmaciones se verá bien y limpio.

Esto funciona bien cuando todas las confirmaciones son locales, pero si intenta cambiar las confirmaciones que ya se han enviado al control remoto, ¡realmente puede causar problemas a otros desarrolladores que hayan verificado la misma rama!

ingrese la descripción de la imagen aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Script por lotes: eliminación de archivos

gfg 200x200 min

Arraylist.contains () en Java – GeeksforGeeks