Git系列-合并

110 阅读2分钟

在理解了分支的概念之后,现在我们可以探讨如何合并不同的分支。

在执行合并操作之前,执行 git status  以确保 HEAD 指向正确的接收分支。

Untitled.png

如图假设我们现在要将feature分支合并到 main 分支.

使用 git merge [branch] 合并指定分支到当前分支,此时下面会有两种合并方式:

fast-forward merge

从当前分支尖端到目标分支的路径没有分叉时,会发生fast-forward合并。

这种情况Git 不是“实际上”合并分支,而是将当前分支指针提示向前移动(即“fast-forward”)到目标分支尖端。

Untitled 1.png

3-way merge

从当前分支尖端到目标分支的路径出现分叉时,会发生3-way合并。

这种情况,Git会把两个分支的共同父节点与两个分支的最新提交进行比较。对于没有冲突的修改,Git会自动合并它们,创建一个新的合并提交。如果在不同分支上对同一行代码进行了修改,Git会遇到冲突。在这种情况下,Git无法自动解决冲突,需要用户手动解决。

Untitled 2.png

快速合并是 Git 默认的合并模式,它不会创建新的合并提交记录,而是简单地将目标分支的指针指向源分支的最新提交。这导致合并后的提交历史线性,并且无法清晰看出哪些提交来自于哪个分支。

可以使用 git merge --no-ff 命令会禁用快速合并模式,并始终创建一个新的合并提交记录,无论目标分支与源分支之间是否存在直接的线性关系。

还有一些相关语句:

git merge --abort: 在合并过程中遇到问题或冲突时,可以使用此命令取消合并,并将当前分支回滚到合并之前的状态。

git merge --continue: 在解决合并冲突后,使用此命令继续进行合并。它将完成合并提交,并将保存解决冲突后的更改。