【git】merge 原理

查了一下git merge如何判定冲突,主要是通过找到公共祖先节点,然后两个分支各自形成一个和祖先diff的俩链表,然后逐行处理,如果恰好都改了同一行,那么就冲突。

这就是最基础的3-way合并。3代表了三个文件,使用3-way合并,可以进行一些智能合并。一旦冲突了,就能知道冲突是由一方导致还是双方导致,如果是一方导致,可以直接合并,如果双方导致,就需要人工处理。如果2-way合并,因为不知道不一样是怎么产生的,只能人工处理。

这种merge策略在git里叫resolve,只能用户2heads的合并。如果有不止一个公共祖先,就需要先虚拟merge公共祖先,这可能是一个递归的过程,这就是recursive的merge策略。具体在这一篇里写的很好:

https://segmentfault.com/a/1190000003966242

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值