Rebase un lío de twigs fusionadas

Después de preguntarle esto. Crear un parche en git me da algunos dolores de cabeza y aprender cómo usar rebase por primera vez, me di count de que debería haberlo usado también para otras cosas.

Hay un repository aguas arriba que he clonado. He hecho algunas de mis propias configuraciones de testing y debugging, que no pienso impulsar nunca. Cuando el repository en sentido ascendente se ha actualizado, siempre he fusionado los cambios en mi twig de "testing". Ahora me doy count de que cambiar mi twig de testings a las últimas confirmaciones en upstream / master mantendría mi repository mucho más limpio.

Traté de volver a establecer una base de mi twig de testing con el compromiso más nuevo en el maestro, pero se produjo una serie de conflictos de fusión, y parece que hay muchos compromisos para reescribir. Será un dolor de cabeza si va a haber conflictos de fusión en muchos de esos

¿Hay alguna manera de simplemente tomar el "estado" de la twig de testing, y el "estado" de la twig maestra, y reescribir una nueva confirmación, tal vez en una twig "testing2" que tenga todas las diferencias?

Para responder a tu último párrafo:

¿Hay alguna manera de simplemente tomar el "estado" de la twig de testing, y el "estado" de la twig maestra, y reescribir una nueva confirmación, tal vez en una twig "testing2" que tenga todas las diferencias?

Ahi esta. git merge --squash branch realizará una fusión y colocará todos los cambios en una única confirmación. Sin embargo, perderá toda la información de compromiso, incluido el historial y las infusiones, así que asegúrese de comprender las consecuencias. Además, tener compromisos únicos grandes rara vez es útil.

Usar git rebase debería funcionar también si ambas twigs comparten un ancestro común. Git es lo suficientemente inteligente como para descubrir qué confirmaciones ya están contenidas en el maestro y cuáles no, y por lo tanto, linealizará su historial.

Sin ver las diferencias de compromiso, recomendaría la recolección de cerezas. Cree una nueva twig del más nuevo upstream/master , y luego select ( git cherry-pick <hash> ) las confirmaciones que haya realizado en su propia sucursal.