查了一下git merge如何判定冲突,主要是通过找到公共祖先节点,然后两个分支各自形成一个和祖先diff的俩链表,然后逐行处理,如果恰好都改了同一行,那么就冲突。
这就是最基础的3-way合并。3代表了三个文件,使用3-way合并,可以进行一些智能合并。一旦冲突了,就能知道冲突是由一方导致还是双方导致,如果是一方导致,可以直接合并,如果双方导致,就需要人工处理。如果2-way合并,因为不知道不一样是怎么产生的,只能人工处理。
这种merge策略在git里叫resolve,只能用户2heads的合并。如果有不止一个公共祖先,就需要先虚拟merge公共祖先,这可能是一个递归的过程,这就是recursive的merge策略。具体在这一篇里写的很好:
【【git】merge 原理】https://segmentfault.com/a/1190000003966242
推荐阅读
- transformer|Swin-Transformer代码讲解-Video Swin-Transformer
- git使用技巧备忘(持续更新。。。)
- git 高级操作
- 同步GIT仓库的操作 -- pull命令
- git|git简单命令
- Git|Tomcat 自定义错误页面(例如404页面等等)
- 本地项目添加到gitee仓库管理
- centos|搭建Git服务器
- Git clone~fatal: protocol '?http' is not supported。解决办法。
- github开通,史上最全demo集合,各种demo持续更新中