git subtree error “fatal: refusing to merge unrelated histories”

喜你入骨 提交于 2019-11-30 14:04:29

问题


I'm trying to figure out how 'git subtree' works. I've followed all directions on this page, but I always get an error trying to merge the subtree project in my own repo ('Step 2'): fatal: refusing to merge unrelated histories.

I've read this post, and when I use the --allow-unrelated-histories option, it seems to work fine. However, I'm not sure whether I should use this...My impression is that the whole point of subtrees is to have unrelated histories within one repository, so it feels strange to have to add the option. Should I add it nevertheless, or am I doing something wrong?

I'm using git v2.9.3 on osx 10.11.6


回答1:


This was a bug in git, it was fixed in https://github.com/git/git/commit/0f12c7d4d175bb0566208213b1b340b6794f305c

See also: https://www.spinics.net/lists/git/msg282340.html




回答2:


If the subtree was added using --squash, you need to also use --squash when you pull

git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash




回答3:


I've been struggling with this for a while and think I found the solution.

I'm pretty new to git so forgive me if I use the wrong names for things.

The problem may have come from you using the --squash option when you ran the git subtree add command.

Try removing the subtree (remove the remote repository and delete all the local files, commit, and push). Then redo the subtree add without the --squash option.

I then jumped over to my subtree repository, made some changes, committed and pushed, then hopped back to my main superproject repository and did a git subtree pull. It gave me some error about the working tree having modifications. To get around that I did a git checkout master, then a git push, then tried the subtree pull again. It worked.

Hope that helps.




回答4:


I am not expert.

But I found something. I was originally trying just a normal pull. But I found this specific subtree pull.

git subtree pull --prefix myPrefixname https://github.com/subTreeRepo.git master --squash

where master is the branch name of course

(from

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

)



来源:https://stackoverflow.com/questions/39281079/git-subtree-error-fatal-refusing-to-merge-unrelated-histories

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!