📖 知识点
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
看到新功能提交出现在历史里,工作区干净。
⚠️ 易错提醒
先
git switch master切回主分支,再git merge 分支名(合到当前分支)快进合并的前提是主分支没新增提交;主分支有改动时会产生合并提交(Day16 会讲)
merge 完用
git log验证新内容已进主线
⚔️ 剧情 Kata 实战任务
任务需求:
切到 "会员系统" 分支,写一个 "会员功能.py" 并提交
切回 master 主分支
用
git merge 会员系统把功能合并回主线用
git log --oneline验证:新功能提交已进主线,且是 "快进合并"体会 "分支开发 → 合并回主线" 的完整流程
参考代码(在终端依次敲)
# 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 ...
💡 完成动作示意:
在 "会员系统" 分支提交了 "会员功能.py"
切回 master →
git merge 会员系统显示 "Fast-forward",新功能提交 e4f5a6b 进入主线
git log看到新提交、ls看到新文件 —— 功能成功合并回主线!
🧠 思考题
git merge 分支名前,为什么要先git switch master切回主分支?(提示:merge 是合到当前分支)什么是 "快进合并"?它发生的条件是什么?(提示:主分支没有新增提交)