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

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 +0800fix: fix bug of segment exception problem after accessing detection output streamfix 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 streamDate: Wed Jan 18 13:27:05 2023 +08002 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.git298b840..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.rhkb.cn/news/140701.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 4 章 串(文本行编辑实现)

1. 背景说明 该文本编辑器利用串的堆实现&#xff0c;其中对串的原始存储方式基本不作修改&#xff08;有部分修改之处&#xff09;&#xff0c;优化之处在于在串的末尾加上了一个空字符&#xff0c;目的是区分字符串结尾&#xff0c;便于将串保存在文件中&#xff0c;且该优化…

K8S:Pod容器中的存储方式及PV、PVC

文章目录 Pod容器中的存储方式一&#xff0e;emptyDir存储卷1.emptyDir存储卷概念2.emptyDir存储卷示例 二.hostPath存储卷1.hostPath存储卷概念2.hostPath存储卷示例 三.nfs共享存储卷1.nfs共享存储卷示例 四.PV和PVC1.PV、PVC概念2.PVC 的使用逻辑及数据流向3.storageclass插…

公众号迁移多久可以完成?

公众号账号迁移的作用是什么&#xff1f;只能变更主体吗&#xff1f;长期以来&#xff0c;由于部分公众号在注册时&#xff0c;主体不准确的历史原因&#xff0c;或者公众号主体发生合并、分立或业务调整等现实状况&#xff0c;在公众号登记主体不能对应实际运营人的情况下&…

c#:System.Text.Json 的使用三(从Newtonsoft迁移)

环境&#xff1a; .net 6.0vs2022 系列篇&#xff1a; 《c#&#xff1a;System.Text.Json 的使用一》 《c#&#xff1a;System.Text.Json 的使用二》 《c#&#xff1a;System.Text.Json 的使用三&#xff08;从Newtonsoft迁移&#xff09;》 参考&#xff1a; 《MSDN: 从 Newt…

【GO】LGTM_Grafana_gozero_配置trace(4)_代码实操及追踪

最近在尝试用 LGTM 来实现 Go 微服务的可观测性&#xff0c;就顺便整理一下文档。 Tempo 会分为 4 篇文章&#xff1a; Tempo 的架构官网测试实操跑通gin 框架发送 trace 数据到 tempogo-zero 微服务框架发送数据到 tempo 本文就是写一下如何在 go-zero 微服务框架里面配置 t…

C++ list容器的实现及讲解

所需要的基础知识 对C类的基本了解 默认构造函数 操作符重载 this指针 引用 模板等知识具有一定的了解&#xff0c;阅读该文章会很轻松。 链表节点 template<class T>struct list_node{T _data;list_node<T>* _next;list_node<T>* _prev;list_node(const T&…

顺序表的实现和练习

杂谈&#xff1a; 有些数据结构&#xff08;C语言实现&#xff09;的教材/教程中会使用C中引用的语法&#xff0c;引用确实在形式上比指针简洁&#xff0c;这样做无非是为了避免后续对二级指针的使用。 我认为既然使用C语言实现数据结构&#xff0c;那么指针就不应该是门槛。…

关于地址存放的例题

unsigned int a 0x1234; unsigned char b *(unsigned char*)&a; 上面代码大端存储和小端存储的值分别是多少&#xff1f; 大端存储的是把高位地址存放在低位地址处&#xff0c;低位存放到高位。小端是高位存放在高位&#xff0c;低位在低位。因为a是整型&#xff0c;所…

Kafka的消息存储机制

前面咱们简单讲了K啊开发入门相关的概念、架构、特点以及安装启动。 今天咱们来说一下它的消息存储机制。 前言&#xff1a; Kafka通过将消息持久化到磁盘上的日志文件来实现高吞吐量的消息传递。 这种存储机制使得Kafka能够处理大量的消息&#xff0c;并保证消息的可靠性。 1…

vue重修003

文章目录 版权声明day03一、今日目标1.生命周期2.综合案例-小黑记账清单3.工程化开发入门4.综合案例-小兔仙首页 二、Vue生命周期三、Vue生命周期钩子四、生命周期钩子小案例1.在created中发送数据2.在mounted中获取焦点 五、案例-小黑记账清单1.需求图示&#xff1a;2.需求分析…

ChatGPT批量写作文章软件

什么是ChatGPT批量写作文章。简单来说&#xff0c;它是一种使用ChatGPT技术的方法&#xff0c;可以帮助您批量生成各种类型的文章和内容。无论您是需要新闻报道、博客文章、产品描述、社交媒体帖子还是其他类型的内容&#xff0c;ChatGPT都能满足您的需求。它可以在极短的时间内…

探索 GO 项目依赖包管理与Go Module常规操作

探索 GO 项目依赖包管理与Go Module常规操作 文章目录 探索 GO 项目依赖包管理与Go Module常规操作一.Go 构建模式的演变1.1 GOPATH &#xff08;初版&#xff09;1.1.1 go get 1.2 vendor 机制&#xff08;中版&#xff09;1.3 Go Module&#xff08;最新版&#xff09; 二.创…

C语言 cortex-A7核UART总线实验

一、C 1&#xff09;uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h&quo…

4k、VR与万兆光网

“全光万兆”对VR意义重大。 pico4的分辨率 PICO 4 的单眼分辨率是 2160 2160&#xff0c;整体分辨率高达 4320 2160。这是一款高性能的 VR 一体机&#xff0c;采用了 2.56 英寸的 Fast-LCD 屏幕&#xff0c;最高可实现 90Hz 刷新率&#xff0c;还有 1200 PPI 和 20.6 PPD 的…

基于海康Ehome/ISUP接入到LiveNVR实现海康摄像头、录像机视频统一汇聚,做到物联网无插件直播回放和控制

LiveNVR支持海康NVR摄像头通EHOME接入ISUP接入LiveNVR分发视频流或是转GB28181 1、海康 ISUP 接入配置2、海康设备接入2.1、海康EHOME接入配置示例2.2、海康ISUP接入配置示例 3、通道配置3.1、直播流接入类型 海康ISUP3.2、海康 ISUP 设备ID3.3、启用保存3.4、接入成功 4、相关…

Mac磁盘空间满了怎么办?Mac如何清理磁盘空间

你是不是发现你的Mac电脑存储越来越满&#xff0c;甚至操作系统本身就占了100多G的空间&#xff1f;这不仅影响了电脑的性能&#xff0c;而且也让你无法存储更多的重要文件和软件。别担心&#xff0c;今天这篇文章将告诉你如何清除多余的文件&#xff0c;让你的Mac重获新生。 一…

Nginx的location作用

location Nginx 的 locaiton 作⽤是根据⽤户请求的 URI 不同&#xff0c;来执行不同的应用。针对用户请求的网站URL 进行匹配&#xff0c;匹配成功后进行对应的操作。 location [ | ~| ~* | ^~ ] url {#指定对应的动作 } 正则表达式解释 匹配符 匹配规则 优先级 精确匹配 1…

数据结构——二叉树层序遍历

链式二叉树的建立 前言一、层序遍历的概念和实现二、判断二叉树是否是完全二叉树总结 前言 来喽来喽~ 二叉树的层序遍历来喽~ 层序遍历那是相当有趣滴&#xff01; 我的朋友&#xff0c;请不要迷惘&#xff0c;你要记住&#xff0c;你终有鲲鹏一日&#xff01; 加油吧&#xf…

详解MySQL存储引擎

前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、MySQL存…

修改vscode底部栏背景和字体颜色

修改vscode底部栏背景和字体颜色 如图&#xff1a; 首先打开齿轮&#xff0c;打开设置搜索workbench.colorCustomizations,然后点击编辑setting.json修改setting.json内内容 "workbench.colorCustomizations": {"statusBar.foreground": "#FFFFFF…