¿Cómo importar files de RepoA a RepoB mientras se mantienen las confirmaciones asociadas a estos files?

Dentro de RepoA , hay un directory ( directoryA ) con algunos files ( RepoA , RepoA , RepoA ) y quiero mover estos files de RepoA a RepoB .

Esto es RepoA :

 RepoA directoryA file1 file2 file3 directoryB file1 file2 file3 

Después de lo que quiero hacer, RepoB se vería así:

 RepoB directoryA file1 file2 file3 

Podría simplemente download directoryA desde RepoA y uploadlo a RepoB , pero perdería las confirmaciones asociadas con file1 , file2 y file3 .

Tampoco puedo transferir todo el RepoA a RepoB (como en una fusión), porque las confirmaciones del directoryB RepoA serían irrelevantes en RepoA .

Editar : Intenté usar git filter-branch --subdirectory-filter directoryName -- --all

No funciona para mí, cada vez que bash tirar después de ejecutar ese command, aparece el error:

 fatal: refusing to merge unrelated histories 

Primero, cree una nueva sucursal y compruébelo para este process, ya que la siguiente operación modificará el historial de RepoA local y eliminará algunos files:

En RepoA local ,

 (1) git filter-branch --subdirectory-filter directoryA <branch> (2) mkdir directoryA (3) mv * directoryA (4) git add . (5) git commit -am 'message' 

En RepoB local ,

 (6) git remote add repoA <local RepoA's path> (7) git pull RepoA <branch> 

Si obtiene el error: fatal: refusing to merge unrelated histories durante el paso (7) , puede ignorar las historias no relacionadas haciendo git pull RepoA <branch> --allow-unrelated-histories

Luego, los historiales de confirmación de file1, file2 y file3 se mostrarán en RepoB. Puede usar gitk --all para ver más claramente.

Para get más detalles, consulte aquí . (Los dos comentarios principales ( esto y esto ) podrían aclararlo más).