1105 字
6 分钟
页面浏览--访问次数--
Git|合并分支

4.0 本节命令行汇总#

Terminal window
git checkout master # 切换到目标分支
git merge 1.0-dev # 将指定分支合并到当前分支
git merge --no-ff 1.0-dev # 合并时禁止快进,强制创建合并提交
git config --global merge.ff false # 全局设置:合并时默认禁止快进
git add <file> # 暂存冲突解决后的文件
git commit # 完成冲突解决

4.1 合并分支的基本概念#

在上一节中,我们学习了如何创建和切换分支。当在不同分支上完成开发后,需要将分支的改动合并到一起。本节将学习 Git 的两种合并方式。

合并的本质:

将一个分支的提交历史”拼接”到另一个分支上。合并后,目标分支会新增一个合并提交,记录两条分支的交汇点。


4.2 第一种合并:普通合并(merge)#

普通合并适用于两条分支都有新的提交、且提交历史产生分叉的场景。

4.2.1 合并场景#

场景:项目主分支master在Commit 3处创建了1.0-dev分支。之后,master继续开发到Commit 5,1.0-dev也完成了1.0版本开发到Commit 4。现在需要将1.0-dev的功能合并回master。

4.2.2 合并操作#

首先切换到目标分支(master),然后执行合并:

Terminal window
git checkout master
git merge 1.0-dev
第一步示意图

4.2.3 合并结果#

执行合并后,master分支会新增一个合并提交(Merge commit),这个提交有两个父提交,分别指向合并前的两个分支的最新提交。

4.2.4 合并冲突#

VS Code 提供了图形化的合并操作界面。

  1. 点击底部状态栏左侧的分支名
  2. 在弹出的分支列表中,选择要合并到当前分支的目标分支
  3. 右键点击目标分支,选择将 <分支名> 合并到 <当前分支>
  4. 或者在源代码管理面板中,点击...菜单,选择合并分支,然后选择目标分支
第二步示意图第三步示意图

如果两个分支对同一文件的同一位置进行了不同的修改,Git 无法自动合并,此时会产生合并冲突。VS Code 会用特殊的标记显示冲突内容,需要手动选择保留哪一方的改动。

第四步示意图

合并冲突的标记格式如下:

<<<<<<< HEAD
当前分支的内容
=======
被合并分支的内容
>>>>>>> <分支名>

手动解决冲突后,保存文件,然后执行:

Terminal window
git add <file>
git commit

完成冲突解决。

合并完成后,1.0-dev分支的改动已经被完整地合并到了master中。

结果示意图

4.3 第二种合并:快进合并(fast-forward)#

快进合并发生在目标分支没有任何新提交、仅仅是被”甩在后面”的场景下。此时 Git 会直接将指针向前移动,而不创建新的合并提交。

4.3.1 快进场景#

场景:项目主分支master在Commit 3处创建了1.0-dev分支。之后,只有1.0-dev有新的提交(Commit 4),而master没有任何新提交。这种情况下,从master合并1.0-dev时就会触发快进合并。

由于master没有任何新提交,Git 会”快进”指针,直接将master移动到1.0-dev所在的位置。这个过程不会创建新的合并提交,历史仍然是线性的。

版本回退示意图

如果希望保留分支的完整历史记录,可以在合并时添加--no-ff参数,强制创建合并提交:

Terminal window
git merge --no-ff 1.0-dev

或者直接在配置文件中更改,这是一劳永逸的方法:

Terminal window
git config --global merge.ff false
示意图

4.4 本节小结#

知识点说明
普通合并(merge)两条分支都有提交时,创建合并提交
快进合并(fast-forward)目标分支无新提交时,直接移动指针
--no-ff 参数强制创建合并提交,保留分支历史
合并冲突同一文件同一位置的不同修改需要手动解决

本节完成了以下内容:

  • 理解了 Git 合并的基本概念
  • 掌握了普通合并(merge)的完整流程
  • 学会了快进合并(fast-forward)的原理与--no-ff参数的使用
  • 了解了在 VS Code 中进行合并操作的方法
  • 认识了合并冲突的产生原因与解决方法

第 4 篇,共 4 篇本文属于系列

Git|合并分支
https://luq-blog.xyz/posts/2026-06-22-git-notes-04-merge/
作者
Luquiescene
发布于
2026-06-22
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

评论

正在加载评论...

最后更新于 ,距今已过 104 天

部分内容可能已过时