Let’s assume that we have three separate git repos named uremont-client, uremont-service, uremont-sdk. We want to create a new repo, named uremont-ios, that contains all those repos in separate folders to have one single repo.
Why do we want to do this? In my case I had two apps and one sdk for them, and it was inconvenient for me to push changes to three separate repos while I was working with these projects and sdk at the same time.
Let’s start.
Terminal setup to allow git to move all folders except one. We will need this later.
Create a new folder uremont-ios and initialize git repo:
|
$ mkdir uremont-ios $ cd uremont-ios $ git init |
Add remote of first old project uremont-client that we want to merge to the new git repo and fetch it:
|
$ git remote add -f uremont-client git@bitbucket.org:wzbozon/uremont.git |
Merge first old project uremont-client to the new repo:
|
$ git merge uremont-client/master --allow-unrelated-histories |
Move all folders and files of that old project to the separate folder inside of our new project:
|
$ mkdir uremont-client $ git mv ./!(uremont-client) ./uremont-client |
Commit changes:
|
$ git commit -m 'Move uremont-client files into subdir' |
Similarly merge second old project uremont-service to the new repo:
|
$ git remote add -f uremont-service git@bitbucket.org:wzbozon/uremontservice.git $ git merge uremont-service/master --allow-unrelated-histories $ mkdir uremont-service $ git mv ./!(uremont-client|uremont-service) ./uremont-service $ git commit -m 'Move uremont-service files into subdir' |
And third:
|
$ git remote add -f uremont-sdk git@bitbucket.org:wzbozon/uremont-sdk.git $ git merge uremont-sdk/master --allow-unrelated-histories $ mkdir uremont-sdk $ git mv ./!(uremont-client|uremont-service|uremont-sdk) ./uremont-sdk $ git commit -m 'Move uremont-sdk files into subdir' |
Finally, add a new remote to our new repo and push it:
|
$ git remote add origin git@bitbucket.org:wzbozon/uremont-ios.git $ git push -u origin master |