合并命令在git中的使用场景有哪些

  介绍

这篇文章运用简单易懂的例子给大家介绍合并命令在git中的使用场景有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强> 1.1“快进”(无冲突)

主分支

假设现在只有一个默认的主分支,并提交了3次,B0, B1和B2都是提交对象。

合并命令在git中的使用场景有哪些

首先要清楚,每次产生的提交对象会包含一个指向上次提交对象(父对象)的指针,所以图中B0, B1和B2之间的箭头是指针指向父对象的意思,真正的提交顺序还是B0到B1再到B2。同时主指针指向最新的提交B2。

另外git中还有一个名为头的特殊指针,它是一个指针,指向当前所在的本地分支(可以将脑袋想象为当前分支的别名)。

<强> dev新分支

现在新建一个分支并切换到新分支。

 git checkout - b dev美元
  转向了一种新分支& # 39;dev # 39; 

它是下面两条命令的简写:

 dev美元git分支
  美元git checkout dev 

合并命令在git中的使用场景有哪些“> <br/> </p> <p>因为是在B2创建dev,所以新分支dev指向B2。另外从分支主切换到分支dev,所以头指向当前分支dev。</p> <p>在dev分支工作并提交了2次:<br/> </p> <p> <img src=

在分支dev的工作结束,切换到分支主人,然后把dev合并到主人上:

 git checkout美元的主人
  切换分支& # 39;主# 39;
  git合并dev美元
  合并由& # 39;递归# 39;策略。
  测试2。txt | 3 + + -
  1文件改变了,2插入(+),1删除(-)

由于当前主人分支所指向的提交是你当前提交(dev的提交)的直接上游,所以Git只是简单的将主指针向前移动。换句话说,当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么Git在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧,这就叫做“快进”(快进)。合并结果如下:

合并命令在Git中的使用场景有哪些“> <br/> </p> <p>最后,你可以删除dev分支,因为你已经不再需要它了——主分支已经指向了同一个位置。你可以使用带- d选项的Git分支命令来删除分支:</p> <pre class=美元git分支- dev

<强> 1.2非“快进”,修改不同文件。(无冲突)

当在新分支dev进行了一次提交B3,再回到分支主又进行一次提交B4。

合并命令在git中的使用场景有哪些“> <br/> </p> <p>这里用git合并合并分为两种情况,现在讲第一种情况:</p> <p>在主分支和dev分支的公共祖先B2后,主人和dev的提交是对不同文件或者同一文件的不同部分进行了修改,git可以合并它们。(比如说原来有测试1和测试2两个文件,B4修改的是测试1文件,而B3修改的是测试2文件,然后合并两个分支。)</p> <pre类=八?bash;”>美元git checkout的主人
  切换分支& # 39;主# 39;
  git合并dev美元
  合并由& # 39;递归# 39;策略。
  测试2。txt | 3 + + -
  1文件改变了,2插入(+),1删除(-)</pre> <p>合并是成功的。</p> <p>出现这种情况的时候,Git会使用两个分支的末端所指的快照(B3和B4)以及这两个分支的公共祖先(B2),做一个简单的三方合并。注意这里合并后主人自动提交提交了一次,产生了提交B5。而B5中的结果是三方合并的结果。合并结果如下:<br/> </p> <p> <img src=美元git分支- dev

<强> 1.3非“快进”,修改相同文件。(有冲突)

当在新分支dev进行了一次提交B3,再回到分支主又进行一次提交B4。

合并命令在git中的使用场景有哪些“> <br/> </p> <p>上面讲的是第一种情况,现在讲第二种情况:</p> <p>在主分支和dev分支的公共祖先B2后,主人和dev的提交是对同一个文件的同一个部分进行了不同的修改,git就没法干净的合并它们。(比如说原来有测试1和测试2两个文件,B4修改的是测试1文件,而B3修改的也是test 1文件的同一部分,然后合并两个分支。)<h2 class=合并命令在git中的使用场景有哪些