Skip to main content

Command Palette

Search for a command to run...

How to Fix fatal: refusing to merge unrelated histories

Updated
2 min readView as Markdown
How to Fix fatal: refusing to merge unrelated histories

Have you ever encountered this error fatal: refusing to merge unrelated histories., while working with git? Well, I have and it wasn't fun. How did I get to that error, you may ask yourself.

This was how it all went down:

I generated an angular project and as you know angular by default comes with git initialized. I then went to create a project in GitHub and added an MIT License file then I came back to add a remote URL by this command in my Angular project

   git remote add origin git@github.com:user/example-project.git

Upon writing the git push origin main then the error occurred.

After a length and thorough research on this error this is what I discovered:

Causes

1. Incompatibility between local repository and remote repository.

This mostly occurs in new projects, if there are some changes in a new remote repository and you have a new repository locally which there are also changes which are not pushed. This is what happened to me.

2. Initiation of merge between two branches with no shared history.

3. Corrupted .git directory.

In a nutshell, this error commonly occurs in situations where we are integrating disparate repositories or initiating a merge between branches with no shared history.

What is the way forward then, you may ask. Well here is how to solve it and avoid the irritation the error brings:

Solutions

1. Use Allow Unrelated Histories Flag (--allow-unrelated-histories)

This is a flag which can be used when merging two different branches or when pulling from same branch with incompatible changes.

When merging, this flag can be used as follows:

 git merge --allow-unrelated-histories <branch-name>

When pulling, this flag can be used as follows:

git <branch-name> origin master --allow-unrelated-histories

2. Create a new Commit

Create a new empty commit that connects unrelated branches then merge those branches.

  • Empty Commit
git commit --allow-empty -m "Merge unrelated branches"
  • Merge unrelated branches
git merge <branch-name>

But how do we prevent this error from totally occurring?

Prevention

1. Repository Initialization

When setting up a new repository, it’s advisable to initialize it using an existing project. This approach links their histories, helping to prevent the issue of unrelated histories.

More information can be found here.

Thank you for reading! Until next time ✋

More from this blog

F

Fredrick Abisai | JavaScript, React, Node.js & Backend Blog

2 posts

Hey, I’m Fredrick.

This blog is where I share what I’m learning as a developer, the real stuff, not just perfect tutorials. Sometimes things break, sometimes they work, and I write about both.

You’ll find posts about web development and building real projects. I also share mistakes, fixes, and small lessons I pick up along the way.

I’m currently exploring AI and how it can solve real problems in everyday life.