How to merge two or multiple git repositories into one
You never know if you need to combine two projects into one. If you ever want to, it should be relatively simple and straightforward to do it.
- If there are two similar libraries and both of the maintainers come together to combine it.
- And sometimes, you don’t have a choice but to have a single repository for the project.
I have used Repo A and Repo B and Repo C for demonstrating the purpose.
- Repo A
- Repo B
- Repo C: This is the Repo C, where I want to merge Repo A and Repo B.
Steps to merge git repositories
I assume you are in the directory, where you want to combine the repositories, for me, it is Repo C.
git remote add -f repo-a firstname.lastname@example.org:vaibhavmule/repo-a.git
This command will add a remote URL of repo-a.
git merge repo-a/master
Now the merging starts, it is as simple as merging any branch. This command will merge all the files and folders from
fatal: refusing to merge unrelated histories
Oops, in the real-world scenarios, it is not as simple as you think, you have to add
—allow-unrelated-histories to get it to work.
git merge repo-a/master --allow-unrelated-histories
By this time, you have successfully merged the
master branch of
repo-c, for the reward, you are ready to grab a coffee.
Wait, you might have got merge conflicts, resolve that, and get your coffee.
Repeat the same steps for Repo B,
git remote add -f repo-b email@example.com:vaibhavmule/repo-b.git
git merge repo-b/master --allow-unrelated-histories
By this time, I was smarter, and I knew that I’m going to get an error:
fatal: refusing to merge unrelated histories, so added allow-unrelated-histories beforehand.
I’m aware that I’m going to get some merge conflicts, so, I resolved it.
git log in your terminal, you will be able to see commit history as expected.
Exercise for learning to merge two git repositories into one:
I’m from Repo A and B in the README.md file looks good. I thought of adding repo named mars, and README file would have contained
I am from Mars.
But this is the exercise which you can do.
- Fork repo-c.
- Create a new repo named
marsor it can be your city or country name.
marsrepo to forked repo-c.
- Create the pull request to repo c.
You see, the merging of one or multiple repositories into single repositories is simple. In the process of merging repositories, the only thing that’s going to take time is merging conflicts.
Follow me on twitter if you liked these kind of articles.