Git rebase、merge、cherry-pick用法

项目开发过程中,一般会有一个主分支,用来进行版本发布,研发会新建一个属于自己的开发分支,一个功能开发完成后会合入主分支

新建分支

D:\workspace\android>git checkout -b develop_test origin/develop_main
Switched to a new branch 'develop_test'
Branch 'develop_test' set up to track remote branch 'develop_main' from 'origin'.

rebase

开过过程中个人开发分支代码需要和公共分支代码保持一致,定期就要合并公共分支代码到个人的分支,这里就需要用到rebase,这里我们先在个人分支提交两笔

D:\workspace\android>git branchdevelop_main
* develop_test
D:\workspace\android>git log
commit 5bb45d719589708208f96660a6be1a9b6cb696ce (HEAD -> develop_test)
Author:test <test.com>
Date:   Wed Aug 2 10:13:45 2023 +0800个人分支第二个提交commit b86669328c7440907ca6ddc27b2d958e56a48721
Author:test <test.com>
Date:   Wed Aug 2 10:13:27 2023 +0800个人分支第一个提交

然后主分支添加两笔提交

D:\workspace\android>git branch
* develop_maindevelop_testD:\workspace\android>git log
commit 1936cd7e5d4a78301e21d9b49a8a260b5c445afb (HEAD -> develop_main)
Author: test <test.com>
Date:   Wed Aug 2 10:17:06 2023 +0800主分支第二个提交commit 2d5198471e67adf8217377d142ada0d1986ce5e4
Author: test <test.com>
Date:   Wed Aug 2 10:16:35 2023 +0800主分支第一个提交

这个时候切到个人分支,是没有主分支的两笔提交的,执行rebase看下:

D:\workspace\android>git rebase develop_main
First, rewinding head to replay your work on top of it...
Applying: 个人分支第一个提交
Applying: 个人分支第二个提交D:\workspace\android>git log
commit 5717ed2c4ef46830d77043d5923f8011b42f02cb (HEAD -> develop_test)
Author: test <test.com>
Date:   Wed Aug 2 10:13:45 2023 +0800个人分支第二个提交commit 2d7a084fbab7ee94d4c93bf6aaba4882a62bb7c5
Author: test <test.com>
Date:   Wed Aug 2 10:13:27 2023 +0800个人分支第一个提交commit 1936cd7e5d4a78301e21d9b49a8a260b5c445afb (develop_main)
Author:test <test.com>
Date:   Wed Aug 2 10:17:06 2023 +0800主分支第二个提交commit 2d5198471e67adf8217377d142ada0d1986ce5e4
Author: test <test.com>
Date:   Wed Aug 2 10:16:35 2023 +0800主分支第一个提交

主分支的两笔提交出现在了个人分支的提交之前,可以看出rebase就相当于先后执行了

  1. git format-patch个人分支的提交生成一个ptach
  2. git reset 撤销个人分支的提交
  3. git merge 添加主分支的提交
  4. git apply 合入个人分支的patch

merge

个人分支功能开发完成后,需要合入到主分支,先切到主分支看下提交记录

D:\workspace\android>git checkout develop_main
Switched to branch 'develop_main'
Your branch is ahead of 'origin/develop_main' by 2 commits.(use "git push" to publish your local commits)D:\workspace\android>git log
commit 1936cd7e5d4a78301e21d9b49a8a260b5c445afb (HEAD -> develop_main)
Author: test <test.com>
Date:   Wed Aug 2 10:17:06 2023 +0800主分支第二个提交commit 2d5198471e67adf8217377d142ada0d1986ce5e4
Author: test <test.com>
Date:   Wed Aug 2 10:16:35 2023 +0800主分支第一个提交

现在merge个人分支的提交

D:\workspace\android>git merge develop_test
Updating 1936cd7..5717ed2
Fast-forward...util/Util.kt   | 7 +++++++1 file changed, 7 insertions(+)D:\workspace\android>git log
commit 5717ed2c4ef46830d77043d5923f8011b42f02cb (HEAD -> develop_main, develop_test)
Author: test <test.com>
Date:   Wed Aug 2 10:13:45 2023 +0800个人分支第二个提交commit 2d7a084fbab7ee94d4c93bf6aaba4882a62bb7c5
Author: test <test.com>
Date:   Wed Aug 2 10:13:27 2023 +0800个人分支第一个提交commit 1936cd7e5d4a78301e21d9b49a8a260b5c445afb
Author: test <test.com>
Date:   Wed Aug 2 10:17:06 2023 +0800主分支第二个提交commit 2d5198471e67adf8217377d142ada0d1986ce5e4
Author: test <test.com>
Date:   Wed Aug 2 10:16:35 2023 +0800主分支第一个提交

可以看到个人分支的两笔提交已经转到了主分支

cherry-pick

merge会把分支的所有改动都合并过来,如果只想转移部分提交点,就需要使用herry-pick,先在个人分支提交一笔

D:\workspace\android>git log
commit dc17c89fe3481e2500814ef4dbbf0b8bcebf27a3 (HEAD -> develop_test)
Author: test <test.com>
Date:   Wed Aug 2 10:33:59 2023 +0800个人分支第三个提交

然后切到主分支把合并这个提交点

D:\workspace\android>git cherry-pick dc17c89fe3481e2500814ef4dbbf0b8bcebf27a3
[develop_main 87c1277] 个人分支第三个提交Date: Wed Aug 2 10:33:59 2023 +08001 file changed, 3 insertions(+)D:\workspace\android>git log
commit 87c1277a57544c53c603b04110e3dde100da8f57 (HEAD -> develop_main)
Author:test <test.com>
Date:   Wed Aug 2 10:33:59 2023 +0800个人分支第三个提交

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

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

相关文章

在外地ssh远程连接家里ubuntu服务器(Coplar内网穿透)

官网&#xff1a;https://www.cpolar.com/ 步骤&#xff1a; 按照官网文档&#xff08;https://www.cpolar.com/docs&#xff09;在家里ubuntu上安装&#xff0c;并且开通隧道即可&#xff0c;不需要在自己笔记本安装 需要注意的是&#xff1a; 可以先安装ssh许可&#xff0c…

微信小程序 - scroll-view组件之上拉加载下拉刷新(解决上拉加载不触发)

前言 最近在做微信小程序项目中&#xff0c;有一个功能就是做一个商品列表分页限流然后实现上拉加载下拉刷新功能&#xff0c;遇到了一个使用scroll-viwe组件下拉刷新事件始终不触发问题&#xff0c;网上很多说给scroll-view设置一个高度啥的就可以解决&#xff0c;有些人设置了…

hadoop与HDFS交互

一、利用Shell命令与HDFS进行交互 在进行HDFS编程实践前&#xff0c;需要首先启动Hadoop。可以执行如下命令启动Hadoop&#xff1a; cd /usr/local/hadoop ./sbin/start-dfs.sh #启动hadoop Hadoop支持很多Shell命令&#xff0c;其中fs是HDFS最常用的命令&#xff0c;利用fs…

ChatGPT的功能与特点

随着人工智能技术的不断发展&#xff0c;ChatGPT作为OpenAI公司开发的基于GPT-3.5架构的大型语言模型&#xff0c;正引领着智能交互的新纪元。ChatGPT的功能与特点使其能够在多个领域展现出惊人的能力&#xff0c;本文将深入探讨ChatGPT的功能与特点&#xff0c;以及它在人工智…

HCIA-datacom数通题库和录播视频资料

HCIA-Datacom&#xff0c;是华为数通认证的初级考试&#xff0c;培训与认证具备数通基础通用知识和技能水平的工程师&#xff0c;只是入门了解数通的一些基础通用知识&#xff0c;适用于小白了解和学习数通知识点起点。 个人建议还是有必要考的&#xff0c;如果在企业考试考试…

Kubernetes (k8s)理论介绍

一&#xff1a;K8s 简介 1、K8s作用 2、K8s 来历 3、为什么要用 K8S? 4、Kubernetes 功能 二&#xff1a;Kubernetes 集群架构与组件 1、Kubernetes 集群架构与组件 2、核心组件 -Master 组件 &#xff08;1&#xff09;Kube-apiserver &#xff08;2&#xff09;Kube…

【数据预测】基于蜣螂优化算法DBO的VMD-KELM光伏发电功率预测 短期功率预测【Matlab代码#53】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. 蜣螂优化算法DBO2. 变分模态分解VMD3. 核极限学习机KELM4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】 1. 蜣螂…

实现Feed流的三种模式:拉模式、推模式和推拉结合模式

在互联网产品中&#xff0c;Feed流是一种常见的功能&#xff0c;它可以帮助我们实时获取我们关注的用户的最新动态。Feed流的实现有多种模式&#xff0c;包括拉模式、推模式和推拉结合模式。在本文中&#xff0c;我们将详细介绍这三种模式&#xff0c;并通过Java代码示例来实现…

关于BQ27427的配置问题

EVM是TI家做的BQ27427的开发板&#xff0c;这款芯片还挺新的。 大概是这样&#xff0c;一块开发板要一千多块钱&#xff0c;使用的时候还出现了一些奇怪的问题。 配置使用的是买的盗版的EV2400&#xff0c;就是黑色的那个东西&#xff0c;使用的通信方式IIC。 TI手册上写的软件…

Spring框架 —— AOP面向切面编程

前言 前面荔枝已经梳理了Spring框架中的IOC部分的知识&#xff0c;接下来荔枝继续梳理Spring框架的另一大重点&#xff1a;AOP面向切面编程。在这篇文章中&#xff0c;荔枝会着重弄清楚AOP的概念并对实现AOP的两种方式进行梳理&#xff0c;同时荔枝也会相应给出代码样例。毕竟荔…

AGI如何提高智力水平

AGI&#xff08;Artificial General Intelligence&#xff09;是一种新型的人工智能系统&#xff0c;具有人类智能的多个方面&#xff0c;能够在各种不同的任务和环境中进行决策和执行。要提高AGI的智力水平&#xff0c;需要从多个方面进行研究和改进。 改进算法和模型&#x…

远程访问本地mysql

文章目录 一、设置本地mysql允许外部访问找到mysql配置文件my.ini &#xff0c;linux环境是my.cnf配置mysql配置文件 二、创建外部访问的mysql用户三、配置mysql用户的权限四、配置防火墙端口五、连接查看本地ip地址 参考 连接命令 mysql -h <host> -P <port> -u &…

Server - 网络粘包原因

网络粘包是指发送方发送的数据被接收方一次性接收的现象&#xff0c;导致接收方无法正确解析数据的边界。网络粘包的原因主要有以下几点&#xff1a; 帧定界错误&#xff1a;在数据传输过程中&#xff0c;接收方无法准确判断每一帧的起始和结束位置&#xff0c;可能将多个帧合并…

后端接收json格式的字符串出现json格式错误

问题描述&#xff1a;在进行接口测试时&#xff0c;出现了一个问题&#xff0c;json格式错误&#xff0c;前端在接口传的其中一个参数是一个字符串&#xff0c;此字符串就是一个json格式的数据&#xff0c;此参数需要在后台执行相对应的业务&#xff0c;业务需要的就是一个json…

rust里用什么表示字节类型?

在Rust中&#xff0c;字节可以使用 u8 类型来表示。 u8 是一个无符号8位整数类型&#xff0c;可以表示0到255之间的值&#xff0c;对应于一个字节的范围。 以下是一个示例&#xff0c;演示了如何声明和使用字节&#xff1a; fn main() {let byte: u8 65; // 表示字母A的ASCI…

Linux【网络基础】IP协议

文章目录 一、IP协议&#xff08;1&#xff09;IP地址协议概念和理解&#xff08;2&#xff09;IP地址协议格式&#xff08;3&#xff09;网络号和主机号&#xff08;4&#xff09;地址管理&#xff08;一&#xff09;分配IP地址方法&#xff08;二&#xff09;CIDR分配IP地址&…

【题解】两个链表的第一个公共结点、链表相加(二)

文章目录 两个链表的第一个公共结点链表相加(二) 两个链表的第一个公共结点 题目链接&#xff1a;两个链表的第一个公共结点 解题思路1&#xff1a;利用路程相同 两个指针从两个链表的头结点出发&#xff0c;以相同的速度开始往前走&#xff0c;走完一条继续走另一条&#x…

【C++】类和对象(上)

1.面向过程和面向对象初步认识 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题 C是基于面向对象的&#xff0c;关注的是对象&#xff0c;将意见事情拆分为不同的对象&#xff0c;靠对象之间的交互完成。 …

慕课网Go-4.package、单元测试、并发编程

package 1_1_User.go package usertype User struct {Name string }1_1_UserGet.go package userfunc GetCourse(c User) string {return c.Name }1_1_UserMain.go package mainimport ("fmt"Userch03 "goproj/IMOOC/ch03/user"//别名&#xff0c;防止同名…

uniapp跨域解决

uniapp跨域解决 跨域是什么 跨域指的是浏览器不能执行其他网站的脚本&#xff0c;当一个网页去请求另一个域名的资源时&#xff0c;域名、端口、协议任一不同&#xff0c;就会存在跨域。跨域是由浏览器的同源策略造成的&#xff0c;是浏览器对JavaScript施加的安全限制。 报错…