27 de octubre de 2023

Fusionar dos repositorios git

 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-historiesSe 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.

  1. Agregue el segundo repositorio como control remoto:

    cd firstgitrepo/
    git remote add secondrepo username@servername:namerepositoryandsoon
    
  2. Asegúrese de haber descargado todos los commits de secondrepo:

    git fetch secondrepo
    
  3. Cree una rama local a partir de la rama del segundo repositorio:

    git branch branchfromsecondrepo secondrepo/master
    
  4. 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/"
    
  5. 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.: