Aplaste todas las confirmaciones con posts de confirmación que coincidan con un determinado patrón

¿Hay alguna manera de aplastar todas las confirmaciones de Git con posts de compromiso que coincidan con un determinado patrón?

Idealmente, esto no sería interactivo: sería automático en la línea de command.

Solutions Collecting From Web of "Aplaste todas las confirmaciones con posts de confirmación que coincidan con un determinado patrón"

git rebase -i crea un file todo y un editor de llamadas; se supone que el usuario edita el file y git lo interpreta. El file está en formatting conocido . En lugar de un editor interactivo, creo un script de shell que edita el file de forma no interactiva; Yo uso sed -i para editarlo en su lugar; Utilizo s/// command de búsqueda para search commands de pick con su $PATTERN y replacelos con commands de squash .

Archivo squash.sh ; pon tu patrón (estilo básico de expresión regular) allí:

 #! /bin/sh exec sed -i 's/^pick \([^ ]\+\) $PATTERN.\+$/squash \1/' $1 

Línea de command:

 chmod +x squash.sh GIT_EDITOR=./squash.sh git rebase --interactive $COMMIT_ID 

Esto no satisface su request idealmente no sería interactiva … pero hago esto para lograr efectivamente lo mismo: https://twitter.com/csswizardry/status/843040649666596865

La solución más general es la siguiente

 :g/<pattern>/normal cws 

Whch significa:

  • :g/ – Busca líneas que contengan …
  • <pattern>/ – … esta cadena
  • normal : ingrese al modo normal
  • cws – cambiar palabra por s (por Squash)