Git: material aplastante compartido entre sucursales

Tengo un repository git que se parece un poco a esto:

C0 ---- C1 ---- ... ---- C12 ---- C14 (dev) \ \---- C13 (abandoned) 

'dev' es la twig principal de desarrollo, y 'abandonado' es un experimento que tal vez deseemos volver a visitar en algún momento en el futuro. Me gustaría aplastar C1C12 en un solo compromiso, para get algo como esto:

 C0 ---- C1' ---- C14' (dev) \ \---- C13' (abandoned) 

Podría usar rebase interactivo en dev para get

 C0 ---- C1' ---- C14' (dev) 

luego mira hacia afuera C1' y selecciona Cherry C13 como C13' . Pero, ¿hay alguna manera más fácil de hacerlo, que también se pueda escalar para manejar diagtwigs más complejos con más twigs y compromisos divergentes (pero un poco de historia compartida para aplastar) sin mucho trabajo manual?

Estás en el path correcto. Primero, ignore C13 y simplemente networkinguzca a C0 - C1' - C14' con una rebase interactiva. Pero entonces no lo elijas, sino que reubique C13 en C1' . git debería detectar que esto es básicamente un no-op, y habrá terminado. Asi que:

 git rebase --onto C1_new C12 C13