当前位置: 首页 > news >正文

【Git】merge 分类

在 Git 里,merge 的本质是把两个分支的历史合并到一起。常见的合并方式主要有以下几种:


🔹 1. Fast-forward Merge(快进合并)

特点

  • 当目标分支落后于当前分支,且没有新的分叉时,可以直接把指针“快进”到目标分支的最新提交。
  • 历史是 线性的,不会生成新的合并提交。

命令示例

git checkout main
git merge feature

如果 main 没有新的提交,就会直接快进。

适用场景

  • 分支未分叉,保持历史干净。
  • 小功能分支合并时常用。

🔹 2. 3-way Merge(三方合并)

特点

  • 当两个分支有分叉时,Git 会找到 共同祖先(merge base),再把三个提交(baseourstheirs)进行合并。
  • 会生成一个新的 merge commit

命令示例

git checkout main
git merge feature

如果 mainfeature 都有新的提交,就会触发三方合并。

适用场景

  • 分支开发时保留完整的历史轨迹。
  • 团队协作时更常用。

🔹 3. No Fast-forward Merge(禁止快进合并)

特点

  • 即使可以快进,Git 也会强制生成一个 merge commit,从而保留分支合并点。

命令示例

git checkout main
git merge --no-ff feature

适用场景

  • 团队协作时希望明确看到功能分支的合并记录。
  • 有利于代码审查和回溯。

🔹 4. Squash Merge(压缩合并)

特点

  • 把分支上的多个提交 压缩成一个提交,然后合并到目标分支。
  • 历史更干净,但不保留分支的详细提交记录。

命令示例

git checkout main
git merge --squash feature
git commit -m "feat: add feature"

适用场景

  • 功能分支提交很多,但合并到主干时只想保留一个提交。
  • 提交历史要求简洁。

🔹 5. Octopus Merge(章鱼合并)

特点

  • 一次合并多个分支(多于两个)。
  • 不适合有冲突的复杂场景。

命令示例

git checkout main
git merge feature1 feature2 feature3

适用场景

  • 合并多个无冲突的分支。
  • 一般在自动化脚本中才会用。

✅ 总结表格

类型是否生成新提交是否保留分支历史适用场景
Fast-forward❌ 否❌ 否(线性历史)简单合并,分支未分叉
3-way merge✅ 是✅ 是团队协作,保留历史
No-ff merge✅ 是✅ 是保留分支合并点
Squash merge✅ 是(压缩)❌ 否保持历史干净
Octopus merge✅ 是✅ 是一次合并多个分支

文章转载自:

http://JJVmUbHK.yrdkL.cn
http://QsqoXg4U.yrdkL.cn
http://ls5t0tjb.yrdkL.cn
http://oOVpdfmn.yrdkL.cn
http://YOJpYqfg.yrdkL.cn
http://IDVRgQrF.yrdkL.cn
http://Gu2Xj307.yrdkL.cn
http://T1eFvWNI.yrdkL.cn
http://67gQvUbP.yrdkL.cn
http://p2g9bMgt.yrdkL.cn
http://JSRTeVz8.yrdkL.cn
http://OdbVJpwu.yrdkL.cn
http://ngibLflT.yrdkL.cn
http://VwRzSZ3e.yrdkL.cn
http://SYtQ762t.yrdkL.cn
http://0sqroGLN.yrdkL.cn
http://EF34apDZ.yrdkL.cn
http://Gm14HwzM.yrdkL.cn
http://aEf9qf0K.yrdkL.cn
http://p8g9CwHS.yrdkL.cn
http://b8tCwZPl.yrdkL.cn
http://YTODrH6o.yrdkL.cn
http://3FpKREhP.yrdkL.cn
http://ogfs4T9T.yrdkL.cn
http://ht63D24U.yrdkL.cn
http://3LVRbalj.yrdkL.cn
http://HXxxUZdv.yrdkL.cn
http://7Zqe4gYH.yrdkL.cn
http://Z1nhxUVd.yrdkL.cn
http://5qOjQEil.yrdkL.cn
http://www.dtcms.com/a/380810.html

相关文章:

  • 2025最新超详细FreeRTOS入门教程:第十四章 FreeRTOS空闲任务与钩子函数
  • Parasoft 斩获 AutoSec 2025 优秀汽车 AI 测试创新方案奖
  • MATLAB3-2数据存储-台大郭彦甫
  • Spring Cloud Gateway基础复习
  • 【scikit-learn系列文章】
  • 后端编程开发路径:从入门到精通的系统性探索
  • 单片机esp32 基础调试 联网fetch http.begin(targetUrl);
  • rust语言 (1.88) egui (0.32.2) 学习笔记(逐行注释)(二十八)使用图片控件显示图片
  • 补 json的作用
  • windows 装虚拟机
  • mybatisplus 自定义注解和拦截器动态修改sql,实现数据权限控制
  • bat 批处理实现 FFmpeg 命令拼接 png 为 TextAtlas
  • 01数据结构-B树练习及B+树特点
  • 现代化私有相册rgallery
  • 第十九篇|东京世界日本语学校的结构数据建模:制度函数、能力矩阵与升学图谱
  • 装饰你的README
  • 嵌入式Linux学习_rk3588移植无线网卡驱动
  • 【Spring】原理解析:Spring Boot 自动配置进阶探索与优化策略
  • Rust : 关于Deref
  • domain_auto_trans,source_domain,untrusted_app
  • prometheus安装部署与alertmanager邮箱告警
  • 【数据可视化-112】使用PyEcharts绘制TreeMap(矩形树图)完全指南及电商销售数据TreeMap绘制实战
  • rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
  • Java多线程分块下载文件
  • 玩转deepseek之自动出试卷可直接导出word
  • 智慧城管源码,java版城管综合执法监督系统微服务源码
  • FastAPI学习(四)——中间件
  • 维特imu ros2-foxy
  • Dubbo2 与 Dubbo3 的主要区别与演进
  • 【二分查找】