Git: mover files a otro repository y conservar la fuente

Tengo un repository llamado Repo A , que contiene dos proyectos. El objective es sacar el Proyecto B de Repo A. Alguien hizo esto, pero antes de que pudiéramos eliminar las dependencies de la location anterior, otras personas se comprometieron con la location anterior del Proyecto B. Para empeorar las cosas, otras personas parecen haber agregado compromisos a Repo B / Proyecto B.

¿Cuál es la forma más fácil para mí de consolidar estos cambios en Repo B conservando la historia?

Esto será tedioso, pero si aparecen conflictos, deberían ser fáciles de resolver.

Si los cambios no son muchos:

En Repo A – Proyecto B

  1. Bloquearlo, no más ediciones. (Probablemente ya lo haya hecho)
  2. Identifique las confirmaciones que se realizaron después del cambio a Repo B mirando el resultado de:

    git log 

En Repo B – Proyecto B

  1. git cherry-pick commit-hash-from-step-2-above , command de muestra:

     git cherry-pick 22c5679c160c5f64f5f58109fe62be683fc896f4 

Esto obtendrá rápidamente todos los cambios en un solo paso, pero la resolución de conflictos probablemente será más difícil.

Si los cambios son muchos, pero tiene una estructura de carpetas bien definida donde el proyecto A está aislado del proyecto B, tendrá:

 repoA/ projectA/ projectB/ repoB/ projectB/ 

Entonces, podrías:

Obtenga todo el código de repoA

 cd repoB git remote add origin2 url-for-repoA # I assumed the master branch, could be other. git pull origin2 master 

El resultado será:

 repoA/ projectA/ projectB/ repoB/ projectA/ projectB/ <-- probably with conflicts waiting to be resolved 

Limpiar:

 cd repoB git reset --hard HEAD projectA/ git remote remove origin2 

resultado:

 repoB/ projectB/ <-- still with conflicts waiting to be resolved