从git的问题模型理解git(三)

目录:
   问题记录
   正文



问题记录:

在这里插入图片描述
问题概述:

1. 图中有两个分支,master,dev分支, 如果master分支和dev分支合并, 会不会产生冲突?  如何才能避免冲突呢?  避免冲突的规则是什么呢??
2. 图中master分支有4个commit值, dev分支有2个commit值. 

正文

本文的知识点涉及到以下两篇文章的内容:
https://blog.csdn.net/qq_44160357/article/details/103548128
https://blog.csdn.net/qq_44160357/article/details/103568122

解析一:


1. 在master分支和dev分支上的修改都是根据base文件的内容为基础进行修改.
2. 同时首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母.  

1. master分支和deV分支来进行合并, master指向 commit值为21cecd,dev指向 commit值为56c17e。如果要
进行合并,此时是不会产生冲突的,为什么呢?在 maste分支上有4个 commit值,dev分支上有2个 commit值,
两个分支进行合并,是把21ced的内容和56c17e的内容进行合并,在 master分支和dev分支上的修改都是根据
base文件的内容为基础进行修改.21ced的内容是在4db7a内容上添加了 master分支2,而4dcb7a是在
3f0c730的内容上添加了 master分支1,3f0c730是在fb2d924上添加了 maste分支,我们换一种角度来观察文件
内容的变化,我们可以想成21cecd的内容是在fb2d924的基础上添加了 master分支, master分支1, master分支
相当于在fb2d924的基础上添加了 maste分支, maste分支1, master分支2,可以看成 master分支上只有两
个ommi值,fb2d924->21cecd。把中间的3f0c730和4dcb7a给忽略掉.而dev分支的56c17e的内容是在
fb2d924的基础上添加了dev分支。 

在这里插入图片描述
图中的commit值的合并可以简单理解成如下图:
在这里插入图片描述
在master分支和dev分支上的修改都是根据base文件的内容为基础进行修改.。master分支上的21cecd的内容相当于是在fb2d924的基础上添加了 master分支, master分支1, master分支2。 而dev分支上的56c172的内容相当于是在fb2d954上添加dev分支. 在21cecd上修改第4行和第5行修改, 同时在第5行下面添加一行, 那么此时不能修改第3行内容. 也不能在3.5上添加一行或者多行内容. 如何避免冲突呢? 我们可以在2.5上添加一行或者多行新内容. 也可以在第1行或者第2行上修改该行的内容. 也可以在第1行上面添加一行或者多行新内容. 此时dev分支上在第2行修改并不会产生冲突. 此时master分支和dev分支合并不会产生冲突.

该文章需要前两篇文章的基础:
https://blog.csdn.net/qq_44160357/article/details/103548128
https://blog.csdn.net/qq_44160357/article/details/103568122


记录:

1. 合并的时候要根据共同祖先, 如果是同一个祖先, 则可能不会冲突, 如果不是同一个祖先, 很有可能冲突.
2. 如果是同一个祖先, 本文中的fb2d924是master分支和dev分支的共同祖先, 此时都是基于base文件来进行修改. 
3. 如果要两个分支上有多个commit值, 我们可以把多个commit值抽象成一个commit值, 此时master分支由以前的多个commit值抽象成两个commit值, 一个是共同祖先,一个是抽象的commit值,比如图中的master分支抽象成了两个commit值, fb2d924和21cecd。  dev分支抽象成了fb2d924和56c17e。 其中fb2d924是两个分支的共同祖先.
4. 当两个分支都抽象后, 就可以根据冲突的规则来判断是否冲突. 如果冲突了就是git add .  和git commit -m  "冲突已解决".
5. 两个分支有多个commit值时,根据base文件(base文件就是共同祖先的文件)的内容. 同时对两个分支进行抽象,使其变成一个commit值, 然后根据base文件(base文件就是共同祖先的文件)的内容和根据冲突规则来进行对两个分支的内容进行修改. 使其避免冲突的发生!!! 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值