Introduction
This is an article for solving the error message as it exist in the title of this article. The error message is ‘fatal: refusing to merge unrelated histories’. The error message appear upon executing the command of ‘git pull’. Actually, the complete command is ‘git pull origin master’. The background of the command execution is because the default branch is set into another branch. That branch is not the ‘master’ branch but it is actually another branch. So, executing the first command for cloning the git-based repository will actually clone that default branch. Furthermore, not all of the source files exist after the cloning process. Since it is not exist in the first clone process, the further attempt will continue on to pull the source code available in the ‘master’ branch. So, the next command execution is in the following command :
git pull origin master
The following is the actual output of the above command execution :
user@hostname:~$ git pull origin master Username for 'http://www.gitlab.com': myuser Password for 'http://[email protected]': From http://www.gitlab.com/myuser/myapp/mobileapp * branch master -> FETCH_HEAD fatal: refusing to merge unrelated histories user@hostname:~$
Apparently, it is not working and it is triggering the following error message as in the above output command execution :
fatal: refusing to merge unrelated histories
Solution
So, continue on the previous section, in order to solve the problem by pulling all of the available source codes in the ‘master’ branch, the following is the solution to handle it :
git pull --allow-unrelated-histories
The following output is the execution of the above command :
user@hostname:~/mobileapp$ git pull origin master --allow-unrelated-histories Username for 'http://www.gitlab.com': myuser Password for 'http://[email protected]':
Apparently, after successfully authenticate the above process, the following output will appear :
Actually, executing the above command will merge two different branch. The first branch is the default branch which is not the ‘master’ branch. The other one is the ‘master’ branch. As in the above image, there is an information of ‘Merge branch ‘master’ of the ‘http://www.gitlab.com/gitlab/myapp/mobileapp’ into the other branch. Since it is not in the same branch, and in this context it doesn’t have any relation, once again, ‘MAKE SURE THAT EACH BRANCH DOES NOT RELATED’. Because this process will merge the source codes from each branch. In detail, since the pulling process is for the ‘master’ branch, the complete command will be as follows :
git pull origin master --allow-unrelated-histories
Fortunately, it works. The following is the actual output of the command execution of the above command pattern :
user@hostname:~/mobileapp$ git pull origin master --allow-unrelated-histories Username for 'http://www.gitlab.com': myuser Password for 'http://[email protected]': From http://www.gitlab.com/myuser/myapp/mobileapp * branch master -> FETCH_HEAD Merge made by 'recursive' strategy. ... ... ...
If there is no other error appear, the above command execution will merge all the branches.