Agregue un repo de Github al otro

¿Cómo agrego repositorys github existentes a un nuevo repository? Esto no es "fusionar", ya que mi intención es agregar files de un repository existente a un nuevo repository conservando la estructura de carpetas y el historial de todos los files.

Tengo 3 repositorys diferentes

github.com/foo/1.git github.com/foo/2.git github.com/foo/3.git 

Cada uno de ellos tiene un set de carpetas y files.

Estoy creando algo nuevo llamado 4 (github.com/foo/4.git) donde quiero agregar los repos existentes.

Hice algo como esto:

 git clone github.com/foo/4.git git clone github.com/foo/1.git cd 4 git remote add 1 ../1 git fetch 1 git branch 1-master 1/master git merge 1-master 

Después de comprometerme, lo que encontré fue que los files y las carpetas de 1 se copyron directamente en 4.

Digamos que tengo abc.txt en 1, luego terminé viendo abc.txt en 4.

Lo que realmente quiero ver es 4/1 / abc.txt que 4 / abc.txt con el historial de abc.txt preservado.

¿Cómo hago esto?

En una nota lateral, leí este artículo antes de empezar a trabajar en agregar: http://blog.caplin.com/2013/09/18/merging-two-git-repositories/

Desea fusionarse en las historias completas de los otros repos, pero después de reescribirlos para mover sus historias completas en subcarpetas.

Para eso sirve git filter-branch .

Para cada subrepo:

  1. Clona el subrepo
  2. `git filter-branch –tree-filter" mv * dir / "
  3. Agregue el clon como control remoto del repository principal
  4. Obtener ese control remoto
  5. git merge o (si también desea reescribir el historial del maestro) git rebase el git rebase recuperado (y ya reescrito) en la twig principal del maestro.