- test this and reword it
> > > I have three repositories, A, B and C. I wish to bring them > > > together to only one repository (.), where they are in a > > > directory called ./Archive, so.. ./Archive/{A,B,C}. Then I plan > > > at a later date to move files arbitrarily from > > > ./Archive/{A/B/C}/Something and into ./Something{A/B/C}. (A lame > > > example, but illustrates what I want to do). > > > > If this transition is meant to be persistent (IOW, the A, B and C stop > > existing as repos on their own) you can rewrite their histories to be > > in the directories (with git filter-branch) and just merge them in > > one. Then the histories will look like as if they have never grown > > separately. > > > I don't quite understand what you are suggesting I do. > > I have looked over the filter-branch manpage. > > What would I first do? Copy all three repositories to ./Archive/{A,B,C}? ... [show rest of quote] Fetch, actually. $ mkdir combined && cd combined $ git init $ git fetch ../A master:A $ git fetch ../B master:B $ git fetch ../C master:C > Then rewrite their histories? There is an example at the end of git-filter-branch manpage. Search for "To move the whole tree into a subdirectory". Just use A, B and C instead of HEAD as last argument. Then checkout one of the new, the rewritten, branches, and merge the two others into it: $ git checkout A $ git merge B $ git merge C That's it.