我的存储库中有两个分支:master和devel。我尝试将devel合并到master中但得到了错误fatal: refusing to merge unrelated histories
。
在github上,master分支包含一些我不关心但不需要合并的文件。我不需要保留master分支的历史记录,我只是想用devel上的东西替换master。
一旦我将devel更新为master,我需要告诉我的合作伙伴如何在没有合并到他的旧本地副本的情况下拉大师。
我正在考虑的是使用this发布并运行的建议:
git branch -m master old-master
git branch -m devel master
git push -f origin master
git branch -d old-master
你认为这会有效吗?我应该告诉我的合作伙伴,为了让他在完成后获得最新的主副本,我应该怎么做?
答案 0 :(得分:1)
自git 2.9以来,默认行为已发生变化:
“git merge”用于合并两个没有共同点的分支 默认情况下,这导致了现有的全新历史 项目创建,然后由一个毫无戒心的维护者拉, 这允许将不必要的并行历史合并到现有的中 项目。已经教导该命令默认不允许这样做, 使用逃生舱口--allow-unrelated-histories选项 一个罕见的事件,它合并了两个开始他们的项目的历史 独立生活。
有关详细信息,请参阅git release changelog。
您可以使用--allow-unrelated-histories
强制合并发生。
示例: git pull origin branchname --allow-unrelated-histories
答案 1 :(得分:1)
你在这里遇到了一个混乱的局面
假设您的分支机构更换顺利,您需要询问您的合作伙伴是否有他希望不做任何改动的更改。
合作伙伴:
git checkout –b master_tmp master
git checkout master_tmp
git branch –D master
git fecth
git checkout master
#Locate the changes you are missing
git log master_tmp
git cherry pick sha1x…sha1y # look at the documentation of cherry pick.
#Resolve conflicts as usual
git commit
git push