¿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.
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)