ver traemos tag repositorio remoto remote origin modificados los eliminar cómo crear cambios archivos git github merge git-branch git-subtree

traemos - git ver archivos modificados



Combina múltiples repositorios de git en uno, manteniendo el historial de sucursales (1)

Esa solución no está tan lejos de lo que intentaste. Esto funciona solo si sus diferentes proyectos no tienen archivos comunes (de lo contrario, puede ser difícil resolver conflictos)

# create a new repo: git init all_projects cd all_project # to make it more easy to understand, let''s create a new branch git checkout -b main # import 1st project git remote add projectA http://projectA git fetch --all --tags git checkout masterA projectA/master git rebase masterA main # move the main branch to the current state git branch main -f # Now your branch main is at the same state as your A project # import 2st project git remote add projectB http://projectB git fetch --all --tags git checkout masterB projectB/master git rebase masterB main # move the main branch to the current state git branch main -f # Now your branch main contains all commits from projectA and projectB # etc..

El resultado será un repositorio con todas las confirmaciones del proyecto A, luego todas las confirmaciones del proyecto B, incluso si el proyecto B tiene algunas confirmaciones anteriores a la última confirmación del proyecto A, pero esto no debería ser un problema (y el árbol de historial). será más fácil de leer)

EDITAR: Lo siento, acabo de notar que esto no resuelve su problema para obtener todas las sucursales remotas. Tal vez puedas encontrar una solución basada en esa pregunta , con algo como esto:

for i in $(git branch -r |grep projectA|awk -F''/'' ''{print $2}''); do git checkout $i projectA/$i git rebase $i main done

pero esto haría que su árbol sea más complejo porque todas las ramas comenzarán desde el compromiso main .

Tengo cuatro proyectos separados. Ellos tienen su propio repositorio git. y el mismo nombre de sucursales para todos los proyectos.

/project/ /project/projA/ /project/projA/.git/ /project/projB/ /project/projB/.git/ /project/projC/ /project/projC/.git/ /project/projD/ /project/projD/.git/

Todos los repositorios git tienen el mismo nombre de ramas y, por supuesto, su propia rama maestra.

Pregunta

Me gustaría fusionar todos los proyectos en uno así:

/Project/.git/ /project/projA/ /project/projB/ /project/projC/ /project/projD/

Pero

Quiero mantener la historia de todas las ramas.

ps -> tengo el mismo nombre de ramas para todo repo. por ejemplo: un nombre de rama usado para los cuatro proyectos: V6-004

Detalles

Intenté el submódulo y el subárbol pero ambos no resuelven el problema.

Intenté también esto.

$ mkdir new_parent_project $ cd new_parent_project $ git init # Now we need to create the initial commit. This is essential. $ touch README.md $ git add README.md $ git commit -am "initial commit"

después

# merge project ProjA into subdirectory ProjA $ git remote add -f ProjA http://GitUrl $ git merge -s ours --no-commit ProjA/V6-006 $ git read-tree --prefix=ProjA/ -u ProjA/V6-006 $ git commit -m "merging ProjA into subdir: ProjA"

después

# merge project ProjB into subdirectory ProjB $ git remote add -f ProjB http://GitUrl $ git merge -s ours --no-commit ProjB/V6-006 $ git read-tree --prefix=ProjB/ -u ProjB/V6-006 $ git commit -m "merging ProjB into subdir: ProjB"

pero

los proyectos se fusionan pero solo tengo la historia de V6-006. Pero no tengo historia para las otras ramas.