git merge 合并分支时遇上refusing to merge unrelated histories的解决方案


前言

最近一个从其他地方迁入公司自己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

命令强制推送

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值