RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
扫码咨询
关闭右侧工具栏
详解git merge命令应用的三种情景
  • 作者:admin
  • 发表时间:2020-11-19 07:50
  • 来源:未知

这篇文章主要介绍了详解git merge命令应用的三种情景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

一、git merge 命令应用的三种情景

1.1 “快进”(无冲突)

master分支

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

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

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

dev新分支

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

$ git checkout -b dev
Switched to a new branch 'dev'

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

$ git branch dev
$ git checkout dev

因为是在B2创建 dev,所以新分支 dev 指向B2。另外从分支 master 切换到分支 dev,所以HEAD指向当前分支 dev。

在 dev 分支工作并提交了2次:

合并dev和master

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

$ git checkout master
Switched to branch 'master'
$ git merge dev
Merge made by the 'recursive' strategy.
test-2.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

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

最后,你可以删除 dev 分支,因为你已经不再需要它了 —— master 分支已经指向了同一个位置。 你可以使用带 -d 选项的 git branch 命令来删除分支:

$ git branch -d dev

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

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