2011-01-26 19 views
7

Tengo dos "ramas", los cuales inician desde la misma base de código, pero ambos de los cuales fueron importados a git después de que se separaron. El historial anterior se pierde y, además, ambas ramas tienen grandes cambios registrados en su historial de git.Git: ¿Cómo fusiono ramas complejas que han divergido ampliamente con algún historial perdido?

¿Cuál es una buena estrategia para abordar las funciones de combinación y las correcciones de errores entre estas dos ramas de una forma manejable?

¿Existe alguna herramienta que me ayude a separar las diferencias en las importaciones originales en compromisos significativos?

+0

Cuando dices historia previa perdido, ¿Quiere decir que no hay ninguna copia existente de la fuente de delante/se crearon estos dos repositorios "ramas"? – Cascabel

+0

Además, ¿cuál es el alcance de la fusión que estás tratando de hacer? Recombine los dos en uno, y vaya desde allí con un flujo de trabajo normal? ¿Continuar por separado y elegir cosas de vez en cuando? – Cascabel

+0

Jefromi, eso es correcto, sin copia de la fuente anterior. Se continuará trabajando en ambos repositorios por separado, pero me gustaría fusionar (¿elegir?) Los cambios de uno de ellos en el otro. – fuzzyTew

Respuesta

1

suena como usted quiere mantener la historia. Usaría rebase --onto con --preserve-merges para mover las características/errores a la rama que desea seguir usando. Si se sientan en una estructura diferente por alguna razón, crea una nueva rama y luego haz un filter-branch con la operación de árbol para hacer que la estructura sea la misma. Luego rebase --onto --preserve-merges como lo haría en el primer escenario.

Espero que esto ayude.

+0

Gracias por la respuesta. Soy un poco nuevo en git, así que me tomará un tiempo leer esos comandos y opciones y ver si pueden hacer lo que necesito. El código se ha movido dentro de los archivos y en la estructura del directorio. – fuzzyTew

+0

buena suerte leyendo en él. Recuerde, ¡está basado en una instantánea! –

+2

haga algunas copias del repositorio y experimente para ver qué hacen los comandos. Recomiendo ejecutar gitk --all & y actualizarlo regularmente para ver visualmente lo que está sucediendo. –

Cuestiones relacionadas