Logo
Section 1 / 4

Git 合并

在本课中,学习 Git 如何实现不同分支之间的合并。

导入

Git 合并

在本课中,学习 Git 如何实现不同分支之间的合并。

Git 允许我们创建独立的分支,并在不同分支上互不干扰地进行开发。通过创建不同分支,可以实现一种非常便捷的工作流程:你或一个团队可以在新分支上开发新功能,仅当功能完成后再将其合并到主分支中。

创建新分支只是完整工作流的一部分。Git 是一个高效的版本控制工具,不仅支持创建分支,还支持将一个分支合并到另一个分支。当我们完成某个独立分支上的新功能开发后,就可以将该分支合并(或整合)到 master 分支中。此时,我们在功能分支中所做的所有更改也会同步出现在 master 分支中。

git merge 命令

我们可以使用 git merge 命令将一个分支合并到另一个分支。虽然这个概念表面上看起来简单,但仍有一些细节值得深入理解。当我们创建一个新分支时,原有的分支实际上从某个共同的节点(即一个提交 commit)开始分叉,形成两条独立的开发路径。

根据当前所处的分支,我们所做的每次提交只会记录在该分支中。当我们决定合并这两个分支时,Git 会先找出它们最近的共同提交节点。从该节点之后,两个分支的提交历史是不同的。随后,Git 会通过创建一个新的合并提交(merge commit) 来完成分支的合并。

...
当一个分支与另一个分支合并时,会在被合并的目标分支上生成一个新的合并提交。

合并完成后,被合并分支的提交历史也将成为目标分支的一部分。原本只存在于功能分支中的更改,现在也会出现在 master 分支中。

将分支合并到 master 分支

下面我们通过一个具体场景来实践 git merge 命令:

  • 你有一个 master 分支和另一个名为 feature_branch 的分支。
  • 在 master 分支中包含一个文件 file1.txt;而在 feature_branch 分支中,你会新增一次提交,添加另一个文件 file2.txt。
  • 当你将 feature_branch 合并到 master 分支后,master 分支应同时包含 file1.txt 和 file2.txt 两个文件。

上述操作已在本课后续提供的终端中预先执行。你可以通过切换分支并在终端输入 ls 命令查看各分支包含的文件。

接下来你需要执行以下步骤:

  • 切换到你想作为合并目标的分支。例如,若要将 feature_branch 合并到 master,需先切换至 master 分支使其成为当前活动分支。可使用 git branch 查看当前所在分支。
1git checkout master
  • 确保已处于目标分支后,即可执行 git merge 命令。其基本语法如下:
1git merge <待合并的分支名>
  • 因此,在本例中应输入以下命令:
1git merge feature_branch

请在下方提供的终端中尝试以上操作:

Terminal

如果你在合并前查看各个分支包含的文件,使用 ls 命令得到的结果应类似于下图所示:

master 分支只有一个文件,而 feature_branch 分支会有两个文件:'file1.txt' 和 'file2.txt'。
master 分支只有一个文件,而 feature_branch 分支会有两个文件:'file1.txt' 和 'file2.txt'。

如果一切正常,你应该会看到类似下图的输出结果:

如果一切顺利,预期输出应该类似于这样。
如果一切顺利,预期输出应该类似于这样。

合并后的验证

你还可以通过 ls 和 git log 命令验证 feature_branch 中的提交和更改是否已成功合并到 master 分支。执行 ls 应能列出 file1.txt 和 file2.txt 两个文件;而 git log 应显示来自 master 分支和 feature_branch 分支的所有提交记录。你可以在下方终端自行验证:

Terminal

预期输出如下图所示:

如果 feature_branch 成功合并到 master 分支,则 master 分支将同时拥有 file2.txt 文件和对应的提交历史。
如果 feature_branch 成功合并到 master 分支,则 master 分支将同时拥有 file2.txt 文件和对应的提交历史。

Git 分支

合并冲突