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

git rebase 合并

/*
 * git rebase
 */

    git rebase 是另一种将更改从一个分支合并到另一个分支的方法。

    与git merge不同,rebase 通过重新应用一个分支上的更改到另一个分支的末端,来创建一个线性的提交历史。
    这样做的好处是可以得到一个更干净、更直观的项目历史,但它会改变提交的历史。

/*
 * 使用git rebase合并到主分支的步骤
 */

    假设你想将 ac-dev上 的更改合并到 master 分支。

    1.切换到特性分支:
        首先,确保你在 ac-dev 上。

        git checkout ac-dev

    2.执行rebase操作:
        使用git rebase 命令将 ac-dev 上的更改重新基于 master 分支的最新提交。

        git rebase master
        
        这会将ac-dev上的提交解除(unapply),
        更新 ac-dev 的基点到 master 分支的最新提交,然后重新应用之前的更改。

    3.解决可能出现的冲突:
        如果在rebase过程中出现冲突,Git会停止并让你解决冲突。
        解决冲突后,使用git add命令标记冲突为已解决,然后通过 git rebase --continue 继续rebase操作。
        如果你想中止rebase操作,可以使用 git rebase --abort。

    4.切换到主分支:
        一旦rebase完成,切换回master分支。

        git checkout master

    5.将变更合并到主分支:
        因为rebase操作已经将ac-dev的更改重新应用在了master分支的最新提交之上,
        现在可以安全地使用git merge命令进行快进合并。

        git merge ac-dev
        
        在这个点上,由于 ac-dev 已经被rebase到master的最新提交上,merge 操作应该是一个快进(fast-forward)合并。

    /* 具体命令操作2 */

     首先使用 git checkout -b ac-dev, 新建并切换到 ac-dev 分支上,并且使用 git commit 命令进行一次提交生成C2节点。
     
     然后使用 git checkout master 命令切换到master分支上,并且使用 git commit 命令进行一次提交生成C3节点。
     
     然后再使用 git checkout ac-dev 命令切回到 ac-dev 分支上。
     
     最后在 ac-dev 分支上执行 git rebase master 命令,经其父类变成 master。
     执行变基后,C2会和C3节点的内容进行合并生成新的节点C2`,
     而 ac-dev 分支的指针也会从C2节点移动到C2`上,移动后 ac-dev 之前的分支就会被废弃掉,
     取而代之的是从 master 延续下来的新分支。
     
/*
 * 注意事项
 */

    不要在公共分支上使用rebase:rebase会改变历史,这在私有分支上是安全的,但如果在公共分支上使用,
    可能会导致团队成员之间的混乱和问题。只在你确定没有其他人正在工作的分支上使用rebase。
    
    理解rebase的影响:在使用rebase之前,确保你理解它如何改变Git历史的细节。错误使用rebase可能会导致更复杂的问题。
    
    通过使用git rebase,你可以保持项目历史的清洁和线性,但要谨慎使用,以避免潜在的问题。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【python】关于判断空值None、判断len()=0,和 if not 的区别
  • 模块化沙箱有几种类型?各类模块化沙箱的功能是什么?
  • springboot集成elasticsearch(7.17.22)
  • zookeeper命令 及 ACL控制
  • 使用IntelliJ IDEA将本地项目推送到远程Git
  • Java10 集合
  • 《逻辑学》傅皓政 课程笔记
  • PDF合并可以如此简单?!这3种方法,简单又实用!
  • idea便捷操作
  • 王老师 linux c++ 通信架构 笔记(六) 第三章 Nginx 开发初步:源码阅读器 vscode 与 xftp 的传输文件
  • 计算机毕业设计选题推荐-农村产权交易与数据可视化平台-Java/Python项目实战
  • pyintaller pyqt5 pytest打包后 找不到测试实例
  • 若依,前后端分离项目,部署到服务器
  • WIFI 配网
  • 银发族拥抱新中式旅游,牵动2万亿市场,旅游业如何接住商机?
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 77. Combinations
  • HTTP请求重发
  • Java到底能干嘛?
  • Markdown 语法简单说明
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • underscore源码剖析之整体架构
  • Zepto.js源码学习之二
  • 订阅Forge Viewer所有的事件
  • 动态魔术使用DBMS_SQL
  • 诡异!React stopPropagation失灵
  • 今年的LC3大会没了?
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 判断客户端类型,Android,iOS,PC
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 新手搭建网站的主要流程
  • 原生Ajax
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)(1.13) SiK无线电高级配置(六)
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (层次遍历)104. 二叉树的最大深度
  • (超详细)语音信号处理之特征提取
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NetCore项目nginx发布
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • @property python知乎_Python3基础之:property
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [AIGC] 开源流程引擎哪个好,如何选型?