前言
最近一个从其他地方迁入公司自己git服务的项目出现了一些奇怪的现象,feature分支为当前开发分支,准备往master上合并的时候发现master分支的起点跟feature的起点不同,并且master的初次提交记录比feature更晚,目前不知道是什么操作引起的,但是合并分支的时候提示了一个“refusing to merge unrelated histories”的错误,后来找到两个解决方案,记录一下
方法一、合并分支时允许合并不相关的历史
参考链接:https://www.cnblogs.com/jinbang/p/8920252.html
在合并分支提示“refusing to merge unrelated histories”的错误,是由于两个分支拥有不相关的提交历史,所以是拒绝合并的,如果确实需要合并,则可以在执行merge命令时指定一个 --allow-unrelated-histories 的参数,会允许合并不相关的历史。
例如,合并feature分支到master分支:
原本的命令:
git merge feature
修改后命令:
git merge feature --allow-unrelated-histories
即可成功合并,确认没有问题之后提交分支
方法二、使用 git reset --hard 命令将feature分支覆盖到master分支
参考链接:https://www.cnblogs.com/justdoyou/p/11389623.html
使用方法一会保留之前master分支上提交的记录,而且feature分支的记录会变成一条总的记录到master分支上,这个不是我们想要的效果,我们比较希望丢弃master原来的提交记录,而将feature的所有记录都覆盖到master上
特别注意
特别注意
特别注意
本操作是将feature分支的提交记录覆盖到master分支上,所以master分支上之前的提交记录将全部丢失,我不清楚是否可以恢复,所以请谨慎操作,确定被覆盖的分支不需要之后再进行操作!!
步骤
1、先切换到mster分支
git checkout master
2、使用reset命令重设hard
git reset --hard origin/feature
执行完以上的命令,master分支就被远程的feature分支所覆盖,如果没有问题就可以提交了,提交时需要使用
git push -f
命令强制推送