2008-10-28 26 views
47

Las estructuras de mis repositorios Git este aspecto:¿Cómo combinar dos ramas de dos repositorios diferentes en un único repositorio?

A-B-C-D-E-F # master branch in separate repo1 
A-B-C-D-E-G-H # master branch in separate repo2 

A-H son simples confirmaciones. Como puede ver, los repositorios están relacionados (repo2 es una bifurcación de repo1). Intento combinar estos dos repositorios en uno.

Después, el único repositorio debe tener la siguiente estructura:

A-B-C-D-E-F # master branch of previous repo1 
     \ 
     \ 
      G-H # master branch of previous repo2 

ya he pasado mucho tiempo de leer la Guía del usuario de Git y así sucesivamente. Sin embargo, este caso de uso (especial) no parece estar documentado en ninguna parte.

+0

Algunas veces las soluciones son demasiado simples de entender por sí mismo;) –

Respuesta

70

Puede tratar otro repositorio de git en el mismo sistema de archivos que un repositorio remoto.

En la primera, hacen los siguientes:

git remote add <name> /path/to/other/repo/.git 
git fetch <name> 
git branch <name> <name>/master #optional 

Ahora están ambas ramas en un único repositorio. Puede alternar entre ellos con git checkout, fusionarse con git merge, etc.

7

Su imagen sugiere que realmente no desea "combinar los dos repositorios" tanto como fusiona asigna G y H en repo1. Debería poder hacer algo tan simple como agregar repo2 como un control remoto para repo1 y buscar/extraer los cambios.

4

Creo que Jim tiene razón. También tenga en cuenta que si dos commits hacen exactamente el mismo parche/diff contra el código, tendrán exactamente el mismo hash SHA1. Por lo tanto, de la A a la E debería tener el mismo SHA1 en ambos repositorios, por lo que no debería ser un problema fusionarse de uno a otro, y mantener el repositorio fusionado como el único repositorio para avanzar.

Puede configurar en repo1 una rama de seguimiento para repo2, y luego mantenerlos separados de esa manera, y demorar la fusión cuando lo desee.

Cuestiones relacionadas