For a project, I decided that can be a good idea to merge a couple of repositories to have a single point where to put all the code, issues, wiki and so on.
I later abandoned the idea, since it not came out as good as I was thinking, but in the end I have done it, so why not to share how to do it ?
The main point was that I'd liked to not lose the commit history of the repos I was merging, so I should find some way to merge even these.
Of course a simple copy of the code does not work, since you loose the commit history.
Luckily git offer a way to do it anyway.
The method I used, and later found in a lot of places so nothing new, is to decide which is the main repository where to add the others and then use the merge command.
repoA is the main repository with a project caller
repoB is the one I want to add with a project called
ProjectB, here is the command to use:
git remote add repoBRemote repoBPath git fetch repoBRemote git checkout -b ProjectB repoB/master mkdir ProjectB git mv [everything in the procject] ProjectB git commit -m [commit message] git checkout master git merge ProjectB git commit git push git remote rm repoBRemote git branch -d ProjectB
The end result is a repository with this structure
| |--- ProjectA | |... | |--- ProjectB | |...
and the commit history of both of them.