分支篇-Day15|合并大法:git merge 合并分支,快进合并

9 次阅读 2026-10-30 14:17

📖 知识点

1. git merge 是什么?

git merge 把某个分支的改动合并到当前分支。做完了功能,切回主分支,再 merge 功能分支,改动就并回来了。

💡 生活比喻merge 像 "把草稿本上的内容誊写回正式版本":你在分支(草稿本)上写好的新章节,用 merge 誊回主分支(正式本),正式本就有了新内容。

2. 基本操作

# 先切回要接收改动的主分支
git switch master
# 再把功能分支合并进来
git merge 会员系统

 

运行示例:

Updating a1b2c3d..e4f5a6b
Fast-forward
 会员功能.py | 1 +
 1 file changed, 1 insertion(+)

 

3. 快进合并(Fast-forward)是什么?

当主分支没有新增提交、功能分支是在主分支基础上一直向前开发的,合并时直接 "快进" 到功能分支的最新位置:

master:  A → B → C
会员系统:        → D → E     (在C基础上又写了D、E)
合并后: A → B → C → D → E

 

快进合并 = 主分支没动过,直接把指针推进到功能分支的末尾,没有合并记录,最干净。

4. 合并后验证

git log --oneline
git status

 

看到新功能提交出现在历史里,工作区干净。

⚠️ 易错提醒

  1. 先 git switch master 切回主分支,再 git merge 分支名(合到当前分支)

  2. 快进合并的前提是主分支没新增提交;主分支有改动时会产生合并提交(Day16 会讲)

  3. merge 完用 git log 验证新内容已进主线

⚔️ 剧情 Kata 实战任务

任务需求:

  1. 切到 "会员系统" 分支,写一个 "会员功能.py" 并提交

  2. 切回 master 主分支

  3. 用 git merge 会员系统 把功能合并回主线

  4. 用 git log --oneline 验证:新功能提交已进主线,且是 "快进合并"

  5. 体会 "分支开发 → 合并回主线" 的完整流程

参考代码(在终端依次敲)

# 0. 进仓库
cd ~/外卖App

# 1. 在"会员系统"分支写功能
git switch 会员系统
echo "def 会员权益(): return '免配送费'" > 会员功能.py
git add 会员功能.py
git commit -m "feat: 新增会员权益功能"

# 2. 切回主分支
git switch master

# 3. 合并功能分支回主线
git merge 会员系统

# 4. 验证:快进合并,新功能进主线
git log --oneline
ls

 

运行示例:

user@linux:~/外卖App$ git switch master
Switched to branch 'master'

user@linux:~/外卖App$ git merge 会员系统
Updating a1b2c3d..e4f5a6b
Fast-forward
 会员功能.py | 1 +
 1 file changed, 1 insertion(+)

user@linux:~/外卖App$ git log --oneline
e4f5a6b feat: 新增会员权益功能
a1b2c3d feat: 完成订单模块
...
user@linux:~/外卖App$ ls
会员功能.py 外卖App.py ...

 

💡 完成动作示意:

  1. 在 "会员系统" 分支提交了 "会员功能.py"

  2. 切回 master → git merge 会员系统

  3. 显示 "Fast-forward",新功能提交 e4f5a6b 进入主线

  4. git log 看到新提交、ls 看到新文件 —— 功能成功合并回主线!

🧠 思考题

  1. git merge 分支名 前,为什么要先 git switch master 切回主分支?(提示:merge 是合到当前分支)

  2. 什么是 "快进合并"?它发生的条件是什么?(提示:主分支没有新增提交)