Tengo dos repositorios Git no relacionados (sin compartir ningún ancestro), uno es un super repositorio que consiste en varios proyectos más pequeños (vamos a llamarlo repositorio A) Otro es solo un repositorio Git local improvisado para un proyecto más pequeño (vamos a llamarlo repositorio B). Gráficamente, se vería asíCómo combinar dos repositorios Git independientes no relacionados en uno con línea de tiempo de historia única
A0-B0-C0-D0-E0-F0-G0-HEAD (repo A)
A0-B0-C0-D0-E0-F0-G0-HEAD (remote/master bare repo pulled & pushed from repo A)
A1-B1-C1-D1-E1-HEAD (repo B)
Idealmente, me gustaría fusionar repo repo B en A con una sola línea de tiempo de la historia. Por lo que parece que en un principio empecé proyecto en repo A. Gráficamente, este sería el resultado final ideales
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (new repo A)
A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H(from repo B)-HEAD (remote/master bare repo pulled & pushed from repo A)
He estado leyendo de cartuchos y sub-árbol (Pro Git es un muy buen libro por cierto), pero ambos parecen proporcionar una solución para mantener dos ramas separadas con un submódulo capaz de extraer los cambios de la cadena ascendente y un subárbol que es un poco menos dolor de cabeza. Ambas soluciones requieren comandos git adicionales y especializados para manejar los chequeos y la sincronización entre la rama maestra y subárbol/módulo. Ambas soluciones también dan como resultado múltiples líneas de tiempo (con subárbol incluso se obtienen 3 líneas de tiempo separadas al usar --squash).
La solución más cercana de SO parece hablar de "graft", pero ¿es eso realmente? El objetivo es tener un repositorio único y unificado donde pueda hacer check-in para que no haya más repositorio B, solo repo A al final.
posible duplicado de [¿Cómo combinar dos repositorios Git?] (Http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories) –
@MichaelDurrant No, rechazo la solución de subárbol y submódulo ya que el escenario no es el mismo – Antony