git从master分支checkout一个新分支,开发完毕合并到master出现冲突

项目是一个人独立开发的,master都是开发完的版本,v1.0,v1.1,v1.2……新开发任务时,从master checkout一个新的分支出来,进行开发,当开发完毕,我checkout到master时,出现了很多冲突文件,很不解,项目都是我一个人开发的,为什么会出现冲突呢,在经过问题排查时发现,我在dev分支上进行开发时,当时master上要修改一个小东西,就在master上进行了修改,然后进行了amend提交,造成了checkout分支时master的commit id和现在的commit id不一样了。所以在合并时,发现两次commit id不一致,就把所有不同的文件标记为冲突,而不是自动合并,需要手动合并。解决办法就是在把master分支的head指针reset到当时checkout时的commit id上,然后再进行合并生成新的提交就不会出现冲突了。

  这个问题的原因就是checkout新分支时,假设master的HEAD指针为1,新分支里面的最新commit id也为1,新分支然后就行1开发往后添加很多commit,当master合并时,只是将head指针移动了而已,但是如果master的head指针commit id在新的分支上不存在时,git就认为在master有别人提交过内容(包括你自己),这时HEAD指针就不能简单的移动到新分支的头部了,必须将master的HEAD指针和新分支的HEAD指针处的内容进行合并才能merge,所以一旦在开了新分支时,在master分支上进行了任何提交,新分支合并时就会出现冲突,切记,切记。

转载于:https://www.cnblogs.com/fangjianbin/p/4381207.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值