Git refusing to merge unrelated histories on rebase
git rebase origin/development the following error message is shown from Git:
fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef
My Git version is 2.9.0. It used to work fine in the previous version.
How can I continue this rebase allowing unrelated histories with the forced flag introduced in the new release?
The default behavior has changed since Git 2.9:
"git merge" used to allow merging two branches that have no common base by default, which led to a brand new history of an existing project created and then get pulled by an unsuspecting maintainer, which allowed an unnecessary parallel history merged into the existing project. The command has been taught not to allow this by default, with an escape hatch
--allow-unrelated-historiesoption to be used in a rare event that merges histories of two projects that started their lives independently.
See the Git release changelog for more information.
You can use
--allow-unrelated-histories to force the merge to happen.
Read more… Read less…
In my case, the error was just
fatal: refusing to merge unrelated histories on every try, especially the first pull request after remotely adding a Git repository.
--allow-unrelated-histories flag worked with a pull request in this way:
git pull origin branchname --allow-unrelated-histories
Try the following command:
git pull origin master --allow-unrelated-histories
This should solve your problem.
I got this error when I set up a local repository first. Then I went to GitHub and created a new repository. Then I ran
git remote add origin <repository url>
When I tried to push or pull, I got the same
fatal: unrelated_histories error every time.
Here is how I fixed it:
git pull origin master --allow-unrelated-histories git merge origin origin/master ... add and commit here... git push origin master
git pull origin <branch> --allow-unrelated-histories
You will be routed to a Vim edit window:
- Insert commit message
- Then press Esc (to exit "Insert" mode), then : (colon), then x (small "x") and finally hit Enter to get out of Vim
git push --set-upstream origin <branch>