Git: parchear retroactivamente un file que se copyrá

Supongamos que tengo un repository git que contiene original.script . En algún momento, quiero hacer algo similar a original.script , por lo que decido usarlo como punto de partida para un nuevo script modified.script :

 % git branch before-cp % cp original.script modified.script % git add modified.script % git commit -m "creating a copy to modify" % vim modified.script #... % git add modified.script % git commit -m "made some modifications" 

Ahora, en algún momento, descubro un error en original.script . Puedo parchar original.script , pero eso no ayuda con modified.script que puede retener el error. Me gustaría corregir original.script antes de que se copyra, haciendo algo como:

 % git checkout before-cp % vim original.script #... % git add original.script % git commit -m "fixing a bug in original before I start copying it" % git checkout master % git rebase before-cp 

Pero esto no funciona como yo quiero. La confirmación "crear una copy para modificar" aún contiene una copy de modified.script que es idéntica a la versión sin parche de original.script (from before-cp^ ).

Estoy de acuerdo con que mi primer bash sea la manera incorrecta de hacerlo, pero ¿hay una forma correcta de hacerlo? ¿Parchear retroactivamente un file para que las copys futuras copien la versión parchada? O voy a tener que parchear manualmente modified.script (y cualquier otro file en el subtree de copy de original.script ).

Tienes que parchear manualmente modified.script . Cuando copió original.script a modified.script , la nueva confirmación simplemente registra el hecho de que creó modified.script con un set particular de contenido de files. Al mirar el diffstat, git le dirá que copió original.script para crear modified.script pero dedujo que, el commit en sí mismo no registró ese hecho. Si modificas original.script retroactiva e intentas volver a establecer la base de la confirmación que crea modified.script además de eso, volverá a crear el mismo modified.script exacto que tenías antes, y si diftiste la confirmación, se verá como Copiaste el original.script y luego hiciste algunos cambios (revirtiendo efectivamente tu corrección) antes de comprometerlo.

La única solución que tiene es aplicar el mismo parche a modified.script .