Rastreando un fragment de un file en dos lugares con git

Tengo un código como

void myfunc() { introduction(); while(condition()) { complex(); loop(); interior(); code(); } cleanup(); } 

que deseo duplicar en dos versiones, a saber:

 void myfuncA() { introduction(); minorchangeA(); while(condition()) { complex(); loop(); interior(); code(); } cleanup(); } void myfuncB() { introduction(); minorchangeB(); while(condition()) { complex(); modifiedB(); loop(); interior(); code(); } cleanup(); extracleanupB(); } 

git alega que debe rastrear el contenido en lugar de los files, así que ¿tengo que decirle que hay pedazos aquí que son comunes a myfuncA y myfuncB para que cuando se fusionen con los cambios de upstream a myfunc esos cambios se propaguen tanto a myfuncA como a myfuncB ? ¿Si es así, cómo?

El código podría escribirse para que myfuncAB hiciera lo correcto en cada punto probando la condición A o B, pero eso podría dificultar seriamente la legibilidad o el performance.

No duplicar el código . Ese es el principio DRY .

Ni Git ni nadie te ayudará por eso.

Además, no entendiste el rol de git: git rastrea el contenido del file , no los fragments. No hay forma de decirle a git que tales y esos fragments en un file son iguales.

De hecho, es un excelente sistema de administración de código fuente, pero raramente hace progtwigción para usted.