Git中的merge命令实现和工作方式(2)

如果你仔细,很有观察力,你可能已经发现我在上述说明中存在的一个漏洞了:由于commit提交 A和B可能各自又包含commit,他们最近的共同祖先可能不是唯一的!一般,他们最有可能的情形是,最近的共同祖先是 C1,C2,C3,C4,⋯Ck−1,Ck ,在这种情况下,git merge 操作将会递归的执行:它首先构造合并 C=C1∨C2∨C3⋯Ck−1∨Ck ,并以此作为三向合并[ A ]+[ B ]−[ C ] 的基础(base)。这就是为什么Git的默认合并策略并称为递归的。 假定两个分支如下图所示,A,B,C,D,E是master分支的历史快照(snapshot);A,B,X,Y,Z是feature分子的历史快照。

Git中的merge命令实现和工作方式

命令

git merge feature

首先查找“master”(当前分支)和“feature”的共同祖先。它或多或少的等价于以下命令:

git merge-base master feature

在我们的举的例子里,他们的共同祖先是B。 如果在C,D,E和X,Y,Z提交中没有冲突,git 将会创建一次“merge commit ” merge commit会有两到多个父亲。 新的图将会是下面这个样子。

Git中的merge命令实现和工作方式

每一次git commit 提交都会生成一棵树,一到多个“父亲节点”,作者的名字,email,日期和提交者的姓名,email,日期。merge提交和普通的提交的唯一区别就是祖先的数量。

在第二幅图中,merge commit提交被以M标注出来了。 如果提交存在冲突,用户就会被要求解决冲突,并手动创建合并提交,在冲突解决后

git commit -a

将会创建合并提交。这条命令没什么特殊的语法。Git 已经知道了用户已经在进行合并了(已经在尝试合并)。

GitHub 使用教程图文详解 

Git 标签管理详解

Git 分支管理详解

Git 远程仓库详解

Git 本地仓库(Repository)详解

Git 服务器搭建与客户端安装 

Git 概述

Git权威指南 PDF高清中文版

Git 的详细介绍请点这里
Git 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17536.html