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

git rebase复杂场景验证

经常面临复杂的分支管理,这里对几种场景的行为做一些验证。

结论总结

  • git rebase br_name:等价与新建br_name分支,然后找到当前分支与br_name分支的分叉点。然后把分叉点以后的提交(当前分支)一个一个的cherry-pick过来。
  • cherry-pick的提交commit id会变,所以rebase后面拿过来的提交commit id也会变。
  • 新版本去rebase旧版本,新的提交commit id都会变,rebase完了覆盖新版本,不会有什么问题。
  • 旧版本去rebase新版本,旧的提交commit id都会变,rebase之后,如果其他分支rebase旧分支,因为旧分支的一部分commit id变了,会导致分叉点计算会提前很多,会有大量冲突,很难解决。
  • 总结下来
    1. 单个活跃分支+多个较稳定分支是比较合理的,常见,符合直觉,好管理。
    2. 两个活跃分支,要确定两个分支的包含关系:
      • 如果要始终保持同步,那为什么用两个呢?可以删掉一个分支。
      • 如果一个新特性分支,一个bug修复分支,要确定同步方向,应该是新特性分支定期rebase bug修复分支。不要反着来。
    3. 三个或三个以上的活跃分支:分支管理成本会很大,需要花费大量时间处理rebase冲突、回合等问题。尽量避免。

rebase场景一:rebase分支带着cherry-pick,rebase后commit id会变吗?

在这里插入图片描述
请添加图片描述

  • 场景:分支四 rebase 分支一
  • 结论:
    1. rebase后,先找到分叉点Y。以分支一为基础,把分叉点Y后面,分支四的提交O、C、P分别cherry-pick过来。
    2. 注意C提交,虽然之前是cherry-pick过去了,但是因为commit id变了,rebase的时候也会当做一个新的commit被拿过来。
    3. commit id变了吗?
      • 分之一的所有commit id都没变,因为用的分支一做的基线,只是checkout分支一,所以不会变。
      • 分支四的虽有commit id都变了,因为rebase等于找到分叉点然后自动cherry-pick,所以会变。
  • 结果:B4继承了B1,并有自己的提交O、C、P。
    在这里插入图片描述

rebase场景二:验证上面结论

在这里插入图片描述
请添加图片描述

  • 场景:分支三 rebase 分支一
  • 结论:
    1. 分叉点是A,以分支一为基础,cherry-pick分叉点后分支三的提交。
    2. 解决E、F、L、M的冲突后合入。
    3. E、F、L、M提交的commit id都变了。
  • 结果:分支一为基础,上面多了四个提交=分支三。
    在这里插入图片描述

相关文章:

  • QtConcurrent
  • COBOL语言的网络安全
  • AGI大模型(11):RAG系统
  • 在全球化浪潮下如何加强供应链风险管理?
  • Java全栈面试宝典:JMM内存模型与Spring自动装配深度解析
  • 数据结构实验3.1:顺序栈的基本操作与进制转换
  • 2025 年山东保安员职业资格考试要点梳理​
  • 深度学习篇---num_works选择
  • 【python以打包的形式运行和脚本形式运行获取路径注意事项】
  • GStreamer开发笔记(一):GStreamer介绍,在windows平台部署安装,打开usb摄像头对比测试
  • Open CASCADE学习|读取点集拟合样条曲线(续)
  • 碰一碰发视频源头开发技术服务商
  • CentOS 7 yum 无法安装软件的解决方法
  • oracle 快速创建表结构
  • C语言基础20
  • 基于SpringBoot的“智慧医疗采购系统”的设计与实现(源码+数据库+文档+PPT)
  • 【题解】AtCoder AT_abc400_c 2^a b^2
  • d202547
  • AF3 OpenFoldMultimerDataModule类解读
  • 【零基础入门unity游戏开发——动画篇】Animation动画窗口,创建编辑动画
  • 网站更新提示ui怎末做/电商培训班一般多少钱
  • 360网站如何做引流/石家庄seo推广公司
  • 福州有网站开发的公司吗/千万不要去电商公司上班
  • 南昌网站定制开发公司/哈尔滨关键词优化报价
  • 网站怎么做rss/营销型网站建设托管
  • 地方房地产网站seo实战案例分享/seo推广怎么学