Git: split commit en otra twig

Tengo una situación siguiente:

root -- A -- D ------------- H ------master \ \ \ \ \ \ - B -- C -- E -- F -- G -- I -- J -- dev 

Commit 'F' contiene una corrección de error que al principio parecía no estar relacionada con la twig principal, pero después de algunas semanas demostró ser importante. Todo estaba ya comprometido y empujado.

Pero otro problema es que la confirmación 'F' contiene algunos cambios y solo uno de ellos es relevante para el maestro. Entonces, lo que me gustaría es:

  • Divida F en 2 confirmaciones separadas (una para el cambio relevante [F1], otra para el otro [F2])
  • Fusionar F1 con maestro

No necesito cambiar el historial de twigs de desarrollo.

¿Puedo hacer algo más que el parche manual diff +?

Me imagino algo así como

 root -- A -- D ------------- H ---K--master \ \ /-------\--/ \ \ /-F1-F2-\ \-----\ - B -- C -- E ------- F -- G -- I -- J -- dev 

(Lo siento por arte de línea descuidado)

Haría lo siguiente: primero elige con --no-commit cometer F con --no-commit en tu twig principal, luego realiza los cambios necesarios en master, coloca todo lo demás. Sé que no suena como la solución perfecta, pero cuando fusionas F con Master, también obtendrás todos los commit ancestros de F (desde la twig dev: ECB):

 git checkout master git stash git cherry-pick --no-commit F git reset && git add -p # alternatively reset already staged changes: git reset -p git commit git reset --hard git stash pop