Skip to content

How to fix “Fatal refusing to merge unrelated histories” error in Git?

Git is a great tool for developers and just about anyone who’s looking to maintain and collaborate on projects that involve versioning and sharing. However, as good as it may be, it’s not free from errors.

In this article, we’re taking a look at the “fatal: refusing to merge unrelated histories” error in Git, figuring out its cause and giving you solutions to resolve the problem.

Also read: How to rename a branch in Git? Local and Remote


What causes the Fatal refusing to merge unrelated histories error?

The error occurs when you’re trying to merge two unrelated projects. That is two projects that have no idea of each other’s existence and have different commit histories simultaneously. 

There are two major cases where you might run into this error.

  • When you clone a project and the .git file gets deleted, corrupted or doesn’t transfer over to the cloned project. In such cases, Git has no idea about the commit history of the project and hence, throws this error any time you try to push or pull from the repository.
  • When you create a new repository, make a few initial commits and later you try to pull something from a remote repository that has a commit history of its own. In this case, Git has no idea about how the two projects are related and hence throws the error. 

You will most likely run into the error when using the git pull command, and pushing doesn’t necessarily require knowledge of the repository’s commit history. When you pull, however, Git needs to know exactly what it needs to fetch, and that’s where you start running into problems.

Also read: Error: Src Refspec Master does not match: 5 Fixes


How to solve the Fatal refusing to merge unrelated histories error?

The solution to this problem is rather simple. The pull command already has a –allow-unrelated-histories flag that you can add to the command to overcome the error. However, you should be cautious when using this.

You see, the option is a flag and not enabled by default for a reason. Suppose you end up pulling from the wrong repository into another one where the two repositories have nothing in common — unrelated histories — and you didn’t actually want to combine them; you could be in a boatload of trouble. Not to mention you’ll end up adding a lot of complications to your existing repository.

You should only use the flag when you want to combine two separate but related repositories with different commit histories and should actually be a single repository in the first place.

Also read: How to remove a remote Git repository?

Hello There!

If you like what you read, please support our publication by sharing it with your friends, family and colleagues. We're an ad-supported publication. So, if you're running an Adblocker, we humbly request you to whitelist us.

Share on facebook
Share on whatsapp
Share on twitter
Share on reddit
Share on linkedin
Share on pocket
Share on pinterest
Share on telegram
Share on stumbleupon
Share on digg
Share on tumblr
Share on email
Share on skype
Share on xing
Share on vk
Share on odnoklassniki
Share on mix








>