Para unir project-a en project-b
cd path/to/project-b
git remote add project-a /path/to/project-a
git fetch project-a --tags
git merge --allow-unrelated-histories project-a/master # or whichever branch you want to merge
git remote remove project-a
Fusión de subárbol
Puede fusionar el repositorio A en un subdirectorio de un proyecto B utilizando la estrategia de fusión de subárbol . Esto se describe en Subtree Merging and You por Markus Prinz.
git remote add -f Bproject /path/to/B
git merge -s ours --allow-unrelated-histories --no-commit Bproject/master
git read-tree --prefix=dir-B/ -u Bproject/master
git commit -m "Merge B project as our subdirectory"
git pull -s subtree Bproject master
( --allow-unrelated-histories
Se necesita la opción para Git> = 2.9.0.)
Otro método
Otra manera que no reescribe ningún historial, por lo que todas las ID de confirmación seguirán siendo válidas. El resultado final es que los archivos del segundo repositorio terminarán en un subdirectorio. El repositorio tendrá más de una confirmación de raíz, pero eso no debería suponer un problema.
Agregue el segundo repositorio como control remoto:
cd firstgitrepo/ git remote add secondrepo username@servername:namerepositoryandsoon
Asegúrese de haber descargado todos los commits de secondrepo:
git fetch secondrepo
Cree una rama local a partir de la rama del segundo repositorio:
git branch branchfromsecondrepo secondrepo/master
Mueva todos sus archivos a un subdirectorio:
git checkout branchfromsecondrepo mkdir subdir/ git ls-tree -z --name-only HEAD | xargs -0 -I {} git mv {} subdir/ git commit -m "Moved files to subdir/"
Combina la segunda rama en la rama principal del primer repositorio:
git checkout master git merge --allow-unrelated-histories branchfromsecondrepo
Referencias
How do you merge two Git repositories? - Stack Overflow
¿Cómo fusionas dos repositorios Git? (qastack.mx)
Combina dos repositorios Git sin romper el historial de archivos (qastack.mx)
No hay comentarios.:
Publicar un comentario