Modificar una confirmación de una twig desde la confirmación correspondiente desde otra twig

Tuve un repo de git que se veía así:

c1->c2->c3->c4 (mainline) \ \ c6->c7->c8 (other branch) 

Creé una nueva twig llamada my branch desde c4 en la línea principal, y agregué una confirmación c5 a my branch . Ahora mi git repo se ve más o less así.

  c5 (my branch) / c1->c2->c3->c4/ (mainline) \ \ c6->c7->c8 (other branch) 

El c4 de mainline estaba en la revisión del código y tuve que modificar el c4 de la mainline después de recibir sugerencias. Sin embargo, los cambios no aparecen en el c4 de my branch . ¿Hay alguna manera de que pueda get todos los cambios de c4 de la mainline al c4 de my branch ?

Editar: Eventualmente tendré que fusionar my branch con la mainline e impulsar c5 para su revisión también.

Cuando modificó su commit c4 en la twig mainline , creó un nuevo hash de confirmación.

Una forma de solucionarlo sería reiniciar desde c4 y aplicar los cambios de my branch :

 git checkout mainline git checkout <hash-of-c4> # go to updated c4 git checkout -b my-branch-new # create branch git cherry-pick <hash-of-c5> # apply c5 

my-branch-new debería tener los cambios de c4 y de c5


Supongo que quiere decir c5 de my branch .

Deberías poder ejecutar git rebase -i mainbranch mientras git rebase -i mainbranch en my branch , y luego confirmar el resultado, para get todas las confirmaciones posteriores de mainline . Eso pondrá a c5 por delante de cualquier cambio que hayas realizado en mainbranch .

En segundo lugar, podría ejecutar git merge mainline desde my branch , pero eso haría una nueva fusión que no siempre es deseable.

Una tercera opción sería simplemente seleccionar cualquier confirmación con el hash de mainbranch en my branch .

Ver: https://git-scm.com/docs/git-rebase