CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Git 版本控制入门/课时/合并分支与冲突处理
RawBlame
课时目录8 节

Git 版本控制入门

  1. 01版本控制与 Git 是什么
  2. 02安装 Git 与首次配置
  3. 03创建仓库与第一次提交
  4. 04状态查看与提交历史
  5. 05分支创建与切换
  6. 06合并分支与冲突处理
  7. 07远程仓库与 push/pull
  8. 08日常协作工作流小结

合并分支与冲突处理

30 分钟

合并分支与冲突处理

功能在分支上开发完成后,要合并(merge)回 main,让主线包含你的改动。若两人改了同一处,Git 会标记冲突,需要人工决定保留什么。

学习目标

  • 用 git merge 把功能分支并入主线
  • 读懂冲突标记并手动解决
  • 知道 merge commit 与 fast-forward 的区别

快进合并(Fast-forward)

当 main 在分支创建后没有新 commit 时:

git switch main
git merge feature/readme

Git 只需把 main 指针移到 feature 最新 commit,历史是一条直线,常不单独产生 merge commit。

三方合并

若 merge 时 main 上也有新 commit,Git 会生成一个 merge commit,父节点有两个(main 与 feature 各自最新)。

git switch main
# 假设 main 上已有别的 commit
git merge feature/readme

用图查看:

git log --oneline --graph --all

冲突是怎么来的

两个分支修改了同一文件的同一区域,Git 无法自动选边,会暂停 merge 并标记文件:

<<<<<<< HEAD
main 上的内容
=======
feature 上的内容
>>>>>>> feature/readme

解决步骤

  1. 打开冲突文件,删掉 <<<<<<< / ======= / >>>>>>> 标记
  2. 保留正确内容(或合并两边)
  3. git add 该文件
  4. git commit 完成 merge(或使用默认 merge message)

放弃本次 merge:

git merge --abort

推荐工作流(小团队)

# 1. 更新主线
git switch main
git pull

# 2. 从最新 main 拉功能分支
git switch -c feature/my-work

# 3. 开发、多次 commit
# ...

# 4. 合并前再拉一次 main,减少冲突
git switch main
git pull
git merge feature/my-work
# 或 PR 在 GitHub 上合并

# 5. 删除已合并分支
git branch -d feature/my-work

与 CodeRoadMap 协作

多人改 admin / platform 时,冲突常见于:

  • 同一路由配置文件
  • 同一组件样式
  • package-lock.json / pnpm-lock.yaml

减少冲突:按模块分工、小步提交、合并前先 pull main。

练习

  • 制造简单冲突:两分支各改 README 同一行,merge 并手动解决
  • 用 git log --graph 对比 fast-forward 与 merge commit
  • 试一次
git merge --abort

小结

merge 把分支历史接回主线;冲突是正常现象,解决后 add + commit。 下一课连接远程仓库,与 GitHub 同步。

加载本节练习…
← 上一课分支创建与切换下一课 →远程仓库与 push/pull