La fusión aplastada se compromete a la característica del maestro

Digamos que realizo 30 commits en cool-feature branch que he sacado del master.

Combino cool-feature en master usando la function merge squash en github. Los 30 commits se convierten en 1.

En mi afán, entonces empiezo a escribir otra característica en la function cool-feature porque olvidé hacer una nueva twig de la function master porque soy un idiota.

Si no se realizan otros commits para master , y fusiono master en cool-feature nuevamente, atrapo todo tipo de conflicto de fusión, aunque técnicamente ya tengo master en mi twig: es solo que tengo una historia diferente en cool-feature debido a la calabaza de compromiso. No me daría pena si no hubiera aplastado los compromisos.

Voy a seguir aplastando mis fusiones para master , ¿hay alguna manera limpia de manejar lo anterior?

Usted tiene la siguiente situación:

 ABCS # master \ DEFXYZ # cool-feature 

Donde D,E,F fueron commits que se aplastaron en S y posteriormente se fusionaron en master .

X,Y,Z son los que se apresuran a usar cool-feature después de haber sido aplastados y fusionados.

Lo que puedes hacer es correr

 git rebase -i S 

donde S es el SHA1 del compromiso aplastado. Se le mostrará un file de text

 pick D commit message pick E commit message pick F commit message pick X commit message pick Y commit message pick Z commit message 

Si ahora simplemente dejas caer todas las líneas correspondientes a confirmaciones contenidas en S (las tres primeras, D,E,F en este caso) volverás a establecer la base del rest de la twig sobre S :

 ABCS # master \ XYZ # new cool-feature 

Después de hacerlo, puedes fusionar master en cool-feature o viceversa.

Resolví esto al git stash mis cambios, haciendo que se desarrollara una nueva twig y se git stash apply .