git | 合并merge、衍合rebase与同步更新cherry-pick

news2024/12/25 0:29:30

git | 合并merge、衍合rebase与同步更新cherry-pick

文章目录

  • git | 合并merge、衍合rebase与同步更新cherry-pick
    • git merege
    • git rebase
    • git rebase和git merge的区别
      • 总结
    • cherry-pick 把别的分支的改动内容同步更新到自己的分支
      • Example:
    • Reference

欢迎关注公众号“三戒纪元”

git merege

  1. 使用
  • 将分支切换到 需要合并的分支,比如master :git checkout master
  • 将分支 feature 合并到当前分支(即 master 分支)上:git merge feature
git merge <branch>        #合并指定分支到当前分支 所有修改合并

git merge

  1. 特点

    1. 只处理一次冲突
    2. 引入了一次合并的历史记录,合并后的所有 commit 会按照提交时间从旧到新排列
    3. 所有的提交过程信息较多,可能会提高之后查找问题的难度

git rebase

  1. 使用

    与 git merge 一致,git rebase 的目的也是将一个分支的更改并入到另外一个分支中去。

    git checkout <branch-src>
    git rebase <branch-tar>       #指定当前分支<branch-src>变基到目标分支<branch-tar>
    

    git rebase

    1. 执行 git rebase master 的操作,意味着让当前分支 feature 相对于 分支 master 进行变基
    2. 提交rebase后,会将 master 分支的最新内容和 feature 分支的第1次提交的内容进行比对,如果有冲突,需要解决冲突,再执行 git rebase --continue 来继续变基的操作。
    3. 然后会将 master 分支的最新内容与 feature 分支的第2次提交进行对比,重复此过程,多次解决同一个地方的冲突。
  2. 特点

    1. 改变当前分支从 master 上拉出分支的位置
    2. 没有多余的合并历史的记录,且合并后的 commit 顺序不一定按照当前分支 commit 的提交时间排列
    3. 可能会多次解决同一个地方的冲突(有 squash 来解决)
    4. master 分支上每个 commit 点都是相对独立完整的功能单元

git rebase和git merge的区别

  • rebase 会把当前分支的 commit 全部放到对应分支的最后面,会改变当前分支拉出的起始位置,所以叫变基。就好像从对应分支拉出来这个分支一样。
  • merge 会把公共分支和当前的 commit 合并在一起,形成一个新的 commit 提交,接在当前分支最后

优劣:

  1. git merge 优点是合并后不破坏当前分支代码的提交记录,缺点是会在当前分支最后产生额外的提交记录并进行两条分支的合并
  2. git rebase 优点是可以将当前分支的提交记录续到目标分支上,形成线性提交历史记录,review时更加直观,适用于每次当前分支有个稳定版本后,变基到目标分支上,而目标分支不进行任何代码修改,这样的提交会比较清晰。缺点是需要多次解决冲突,并且提交后的commit顺序会发生改变

总结

  1. 合代码到公共分支上时用git merge,保证当前分支功能合并到公共分支,同时又不改变公共分支历史提交
  2. 合代码到个人分支时用git rebase,保证个人分支形成线性提交历史记录,方便查看历史提交和修改

cherry-pick 把别的分支的改动内容同步更新到自己的分支

  1. 基本使用
git checkout master 
git cherry-pick [commitID]
git push 

该命令会返回一个变量集表示该分支工作树与其父级工作树之间的差异,并将其应用于当前分支

Example:

  1. 首先查看其他分支的修改点的commitID
(base) qiancj@qiancj-HP-ZBook-G8:~/codes/Sesame-lidar$ git log
commit 17f3bed5730602d202d97ca1b59380f902088742 (HEAD -> feat-refactor, origin/feat-refactor)
Author: qianchengjun <qianchengjun@Sesame.com.cn>
Date:   Wed Jan 18 13:27:05 2023 +0800

    fix: fix bug of segment exception problem after accessing detection output stream
    
    fix bug of segment exception problem after accessing detection output stream
  1. 切换到待修改分支 cherry-pick提交点

    (base) qiancj@qiancj-HP-ZBook-G8:~/codes/Sesame-lidar$ git cherry-pick 17f3bed5730602d202d97ca1b59380f902088742
    [feat-segment bf90948] fix: fix bug of segment exception problem after accessing detection output stream
     Date: Wed Jan 18 13:27:05 2023 +0800
     2 files changed, 21 insertions(+), 7 deletions(-)
    
  2. 推送到远端

    直接提交即可,不需要add 和 commit

    (base) qiancj@qiancj-HP-ZBook-G8:~/codes/Sesame-lidar$ git push origin feat-segment
    Enumerating objects: 24, done.
    Counting objects: 100% (24/24), done.
    Delta compression using up to 16 threads
    Compressing objects: 100% (12/12), done.
    Writing objects: 100% (13/13), 1.40 KiB | 1.40 MiB/s, done.
    Total 13 (delta 7), reused 0 (delta 0)
    remote: Powered By Gitee Premium
    To ssh://10.78.5.253:344/leida/Sesame-lidar.git
       298b840..bf90948  feat-segment -> feat-segment
    

    使用以上命令以后,这个提交将会处在master的最前面

2.合并多个提交

git cherry-pick <hashA> <hashB>     // 合并两个提交
git cherry-pick <hashA>..<hashB>    // 合并从A到B两个提交中到所有提交,但不包含A
git cherry-pick <hashA>^..<hashB>   // 合并从A到B两个提交中到所有提交,包含A

3.pick以后产生了冲突

git cherry-pick --continue  // 1. 解决完冲突以后,继续下一个 cherry-pick
git cherry-pick --abort   // 2. 如果不想解决冲突,要放弃合并,用此命令回到操作以前
git cherry-pick --quit   // 3. 不想解决冲突,放弃合并,且保持现有情况,不回到操作以前

Reference

  • git merge rebase cherry-pick分别什么时候用?一文解惑

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外卖霸王餐系统 美团试吃系统-代理系统

微客云免费提供外卖霸王餐系统&#xff0c;支持分站、运营商、商家后台、独立域名&#xff0c;自定义品牌&#xff0c;自主收款。 想做霸王餐的可以参考下联系微客云。地址&#xff1a;微客云 - 淘宝客CMS,公众号,小程序,淘客APP,外卖返利CPS,私域电商系统 分站后台演示&…

学信息系统项目管理师第4版系列11_信息安全管理

1. 信息安全基础 1.1. 保密性(Confidentiality&#xff09; 1.1.1. 信息不被未授权者知晓的属性 1.1.2. 确保信息不暴露给未授权的实体或进程 1.2. 完整性(Integrity) 1.2.1. 信息是正确的、真实的、未被篡改的、完整无缺的属性 1.2.2. 只有得到允许的人才能修改数据&…

React中的受控组件(controlled component)和非受控组件(uncontrolled component)

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 组件⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是…

【李沐深度学习笔记】自动求导

课程地址和说明 自动求导p1 本系列文章是我学习李沐老师深度学习系列课程的学习笔记&#xff0c;可能会对李沐老师上课没讲到的进行补充。 吸取上一次写文章的经验&#xff0c;这次公式部分尽量采用直接截图&#xff0c;不用lateX&#xff0c;用lateX有一些浪费时间 自动求导…

MySQL 的 C 语言接口

1. mysql_init MYSQL *mysql_init(MYSQL *mysql); mysql_init函数的作用&#xff1a;创建一个 MYSQL 对象&#xff08;该对象用于连接数据库&#xff09;。 mysql_init函数的参数&#xff1a; ① mysql&#xff1a;MYSQL 结构体指针&#xff0c;一般设置为 NULL 。 mysql_init函…

国产5G手机20天销量不及苹果一天,被iPhone15按在地上摩擦

iPhone15的上市销售&#xff0c;最大竞争对手无疑是国产5G手机&#xff0c;如今iPhone15上市首日的销量数据也已经出炉&#xff0c;高达200万台&#xff0c;这比国产5G手机卖20天的销量还要多&#xff0c;iPhone15让国产手机领教了什么叫遥遥领先。 据了解苹果对iPhone15的预期…

【动手学深度学习-Pytorch版】门控循环单元GRU

关于GRU的笔记 支持隐状态的门控&#xff1a;这意味着模型有专门的机制来确定应该何时更新隐状态&#xff0c; 以及应该何时重置隐状态。 这些机制是可学习的&#xff0c;并且能够解决了上面列出的问题。 例如&#xff0c;如果第一个词元非常重要&#xff0c; 模型将学会在第一…

SpringMVC基础(一)——Servlet简介

1. Hello Servlet (1) 创建父工程 删除src文件夹 引入一些基本的依赖 <!--依赖--> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

Spring学习笔记8 Bean的循环依赖问题

Spring学习笔记7 Bean的生命周期_biubiubiu0706的博客-CSDN博客 什么是Bean的循环依赖 A对象中有B属性,B对象中有A属性.这就是循环依赖,我依赖你,你依赖我。你侬我侬 这种情况下会不会出问题? 1.singleton下的set注入产生的循环依赖 2.prototype下的set注入产生的循环依赖 B…

010_第一代软件开发(二)

第一代软件开发(二) 文章目录 第一代软件开发(二)项目介绍界面布局功能完善快照功能获取可用串口播放按键提示音 关键字&#xff1a; Qt、 Qml、 QSerialPort、 QPixmap、 QSoundEffect 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff…

论文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for SBR》阅读

论文《Enhancing Hypergraph Neural Networks with Intent Disentanglement for Session-based Recommendation》阅读 IntroductionPreliminaries问题形式化Hypergraph Methodology嵌入层 &#xff08;Intent-Aware Embedding&#xff09;会话超图构建 微观解耦宏观解耦预测层模…

SpringMVC+入门案例

一、入门案例 1.依赖导入 <!--1. 导入SpringMVC与servlet的坐标--> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scop…

postgresql-数据库与模式

postgresql-数据库 基本概念创建数据库修改数据库删除数据库管理模式 基本概念 数据库管理系统&#xff08;DBMS&#xff09;是用于管理数据库的软件系统。常见的关系型DBMS有PostgreSQL、 MySQL、Oracle、Microsoft SQL Server、SQLite 等。常见的 NoSQL 数据库有 Redis、Mon…

vue3-ts-vite:Google 多语言调试 / 翻译

一、实现目标 二、代码实现 2.1、项目vue3 - ts - vite 2.2、index.html 引入文件 <script>window.onload function () {const script document.createElement(SCRIPT)script.src https://translate.google.com/translate_a/element.js?cbgoogleTranslateElementI…

kr 第三阶段(六)C++ 逆向

结构体 结构体对齐 设置结构体对齐值 方法1&#xff1a;在 Visual Studio 中可以在 项目属性 -> 配置属性 -> C/C -> 所有选项 -> 结构体成员对齐 中设置结构体对齐大小。方法2&#xff1a;使用 #pragma pack(对齐值) 来设置&#xff0c;不过要想单独设置一个结…

2023 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|数学建模完整代码+建模过程全解全析

问题一&#xff1a;区域碳排放量以及经济、人口、能源消费量的现状分析 思路&#xff1a; 定义碳排放量 Prediction 模型: CO2 P * (GDP/P) * (E/GDP) * (CO2/E) 其中: CO2:碳排放量 P:人口数量 GDP/P:人均GDP E/GDP:单位GDP能耗 CO2/E:单位能耗碳排放量 2.收集并统计相关…

vuereact质检工具(eslint)安装使用总结

1、ESLint ESLint工具主要类似java中的checkStyle和findbugs&#xff0c;是检查代码样式和逻辑规范的工具。 1.1、ESLint安装流程 打开VSCode软件&#xff0c;打开扩展中心&#xff0c;下载ESLint插件 图1.1 点击后面的install按进行安装&#xff0c;如图1.2所示&#xff1…

MySQL(8) 优化、MySQL8、常用命令

一、MySQL优化 从上图可以看出SQL及索引的优化效果是最好的&#xff0c;而且成本最低&#xff0c;所以工作中我们要在这块花更多时间。 服务端参数配置&#xff1b; max_connections3000 连接的创建和销毁都需要系统资源&#xff0c;比如内存、文件句柄&#xff0c;业务说的支持…

代码随想录算法训练营第四十二天| 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集

正式开始背包问题&#xff0c;背包问题还是挺难的&#xff0c;虽然大家可能看了很多背包问题模板代码&#xff0c;感觉挺简单&#xff0c;但基本理解的都不够深入。 如果是直接从来没听过背包问题&#xff0c;可以先看文字讲解慢慢了解 这是干什么的。 如果做过背包类问题&…

网络安全深入学习第七课——热门框架漏洞(RCE— Fastjson反序列化漏洞)

文章目录 一、什么是json?二、Fastjson介绍三、Fastjson-历史漏洞四、Fastjson特征1、在请求包里面有json格式的2、报错信息中会显示fastjson字眼 五、Fastjson序列化和反序列化六、Fastjson反序列化漏洞原理七、Fastjson反序列化漏洞过程八、Fastjson反序列化漏洞&#xff08…