Git: copy parte de la twig a otra twig

Digamos que tenemos versiones que están en twigs separadas.

  • dominar
  • v1
  • v2

Nuestro flujo de trabajo con SVN fue que realizamos reparaciones de errores en el maestro y luego las fusionamos en v1 y v2, las nuevas características deben esperar hasta que se cree la próxima versión (v3).

Así es como se ve después de la conversión de SVN a GIT

---v2----v2----v2 / M----M----M----M----M----M----M----M----M----M \ v1----v1----v1----v1---v1---v1 

M es maestro, v1 y v2 son twigs de versión.

Ahora digamos que alguien presionará commits "c" y "c1" en el master.

  ---v2----v2----v2 c1---c1---c1 / / \ M----M----M----M----M----M----M----M----M----M---c---c---c---c---c--c \ v1----v1----v1----v1---v1---v1 

¿Cómo se puede copyr la parte de la twig que contiene "c" y "c1" en v1?

Resultado Esperado:

  ---v2----v2----v2 c1---c1---c1 / / \ M----M----M----M----M----M----M----M----M----M---c---c---c---c---c--c \ c1---c1---c1 \ / \ v1----v1----v1----v1---v1---v1---c---c---c---c---c--c 

Descubrí que Cherry-pick me permite elegir commits únicos y volver a aplicarlos cuando quiera. Creo que la rebase hace lo que quiero, pero estoy perdido en los arguments de Rebase.

Así es como creo que debería funcionar:

  • llevar todo al repository local

  • rebase c + c1 se compromete en v1 o v2

  • empujar a nuestro repository "central"

Además, si hay otra alternativa de flujo de trabajo que nos funcione, estoy realmente abierto a sugerencias.

Creo que la manera más fácil de recibir el resultado esperado es git cherry-pick o git format-patch :

 # cherry-pick example git checkout v1 git cherry-pick c git cherry-pick c1 ... # patch example git checkout master git format-patch HEAD~3 git checkout v1 && git am *.patch 

Con rebase no obtienes el resultado esperado:

  ---v2----v2----v2 c1---c1---c1 / / \ M----M----M----M----M----M----M----M----M----M---c---c---c---c---c--c ^ \ your current v1 base \ v1----v1----v1----v1---v1---v1 ^ v1 base after rebase