当一个 Branch 中的开发工作完成以后,通常需要把它的修改合并到主分支。这个操作叫做 合并(Merge)。
假设我们现在有 main 和 feature/login 两个 Branch。feature/login 已经完成登录功能,并在 main 的 A → B → C 之后创建了 D、E 两个 Commit:
现在我们希望让 main 也包含 D 和 E 中的修改,就可以执行 Merge。
第一步:先切换到接收修改的 Branch
一个非常重要的原则是:
先切换到“你希望把代码合并进去”的 Branch,再执行
git merge。
如果我们希望把 feature/login 合并到 main,先执行:
git switch main然后:
git merge feature/login这里可以把它理解成:
当前在 main
+
把 feature/login 的修改合并进来因此,git merge 后面写的是“要合并进当前 Branch 的那个 Branch”。
合并成功以后发生了什么?
如果没有冲突,Git 会自动完成 Merge。
合并前,main 停在 C,feature/login 指向 E。合并以后,main 会沿着提交历史包含登录功能的 D 和 E,上图右侧展示了结果。
具体历史结构可能因为不同的 Merge 情况略有区别,但对初学者来说,只需要理解最终结果:main 中现在已经包含了 feature/login 的代码。
分支合流动画台
先切回 main,再把 feature/login 合并进 main,观察分支指针汇合。
—
—
先切回 main,再把 feature/login 合并进 main,观察分支指针汇合。合并后检查代码
Merge 完成后,可以运行:
git status检查当前状态。
也可以运行:
git log --oneline查看 Commit 历史。
更推荐的做法是直接运行项目或者测试相关功能,确认 Merge 后项目仍然工作正常。
Git 能保证代码被合并,但它并不能保证业务逻辑一定正确。例如两个 Branch 虽然没有产生 Git Conflict,但组合起来后程序仍然可能出现 Bug。因此 Merge 完成后进行简单测试是很重要的。
删除已经完成的 Branch
如果 feature/login 已经成功合并到 main,通常就没有必要继续保留这个本地 Branch。
可以使用:
git branch -d feature/login其中 -d 表示 delete。
删除后可以运行:
git branch确认当前 Branch:
* main需要注意的是,删除 Branch 并不会删除已经合并到 main 中的代码。feature/login 只是一个 Branch 名称,代码和 Commit 已经进入 main 后,就不会因为删除 Branch 而消失。
知识测验
feature/login 合并进 main,正确顺序是什么?
一个完整的 Merge 流程
假设你已经在:
feature/login完成开发并 Commit:
git add .
git commit -m "Add login feature"首先切回:
git switch main然后合并:
git merge feature/login检查状态:
git status确认没有问题后,可以删除已经完成的 Branch:
git branch -d feature/login整个流程可以理解为:
feature/login 开发完成 → Commit → git switch main → git merge feature/login → 测试 → 删除 feature/login
实际团队中一定是在本地 Merge 吗?
不一定。
在团队项目中,更常见的方式通常是把 Branch Push 到 GitHub,然后创建 Pull Request(PR)。其他开发者 Review 代码并确认 CI 检查通过后,再通过 GitHub 把 Branch 合并到 main。
后面的协作内容会介绍这个完整流程。
不过理解本地 git merge 仍然很重要,因为 GitHub 上的 Merge 本质上仍然是在处理 Branch 之间的合并关系。
练习
feature/profile 已经完成并提交。写出把它合并进 main、查看结果、运行测试并删除已完成 Branch 的命令顺序。