git merge和git rebase有什么区别?

news2024/11/29 4:37:51

git merge和git rebase有什么区别

git rebasegit merge是在日常开发中常用的用于分支合并的命令,也是非常容易误用的两个命令。本文将通过图文的方式去详解二者之间的区别。

git merge

git merge会为本次的合并过程生成一条新的commit,并将该commit添加到目的分支上。通常用于将feature分支的内容向主分支进行合并。

如下图所示,在main分支的c2提交后checkout了一个新分支feature。随后feature分支上提交了c3,c5和c7三个提交。于此同时,main分支也在往前推进,产生了c4,c6,c8三个提交。此时由于feture分支已经开发完毕,向main分支进行合并,在解决完冲突之后,main分支上产生了一个新的提交c9。

在这里插入图片描述

git rebase

git rebase是一种变基操作。两个分支有一个最近交汇的点,就称之为"基"。而变基就是移动该"基点",移动之后的效果就像是刚刚checkout分支一样。 该操作通常用于从main分支向feature分支同步最近的改动

如下图所示,在main分支的c2提交后checkout了一个新分支feature。随后feature分支上提交了c3,c5和c7三个提交。于此同时,main分支也在往前推进,产生了c4,c6,c8三个提交。由于此时feature分支和main分支变得不一致,并且main分支有人也有修改了相同的文件,因此希望拉取到main分支的最新的改动,于是我们checkout到feature分支,然后执行rebase操作。

于是两个分支的公共交点转移到了c8,,并且生成了c3’,c5’,c7’三个提交。操作完毕后,就好像从main分支的c8节点开始checkout了一个新分支feature1,然后有了c3’,c5’,c7’三个提交。

在这里插入图片描述

在线实验

下面使用在线平台进行git的相关演练,非常推荐使用下面的在线学习平台
git在线操作学习地址,日常使用git的过程中,如果有一些不太确定的操作行为,可以使用该平台验证,这可以节约你的时间。在不知道这个平台之前,我都是去自己的github上新建一个test repo进行验证的。

实验1:git merge

使用下面的语句准备一些提交:

git commit -m "demo"
git checkout -b feature1
git commit -m "demo"
git commit -m "demo"
git checkout main
git commit -m "demo"
git commit -m "demo"

在这里插入图片描述

此时我们将feature1分支上的内容合并到main分支:

git checkout main
git merge feature1

在这里插入图片描述

可以看到main分支上有了一个新的提交c7。

实验2:git rebase

使用下面的语句准备一些提交:

git commit -m "demo"
git checkout -b feature1
git commit -m "demo"
git commit -m "demo"
git checkout main
git commit -m "demo"
git commit -m "demo"

在这里插入图片描述

此时我们将main分支上的改动内容合并到feature分支:

git checkout feature1
git rebase main

在这里插入图片描述

可以看到main和feature1相交的点来到了c6,并生成了c3’和c4’两个提交。

总结

  • merge通常用于从feature分支向main分支合并开发的内容。
  • rebase通常用于feature分支拉取main分支的最新改动。

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

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

相关文章

亚马逊云科技中国峰会带你玩转AIGC全攻略原

充满想象的AIGC时代,企业如何抓住机遇实现双效提升?要说2023年科技圈顶流话题,非AIGC(AI-generated Content,人工智能生成内容)莫属。当前,以GPT模型为代表的AIGC正在持续渗透各行各业&#xff…

LLVM for TVM

田海立CSDN 2023-06-01 本文简明列举LLVM作为target&#xff0c;如何集成到TVM里的。 {cmake/modules/LLVM.cmake} 0. 设置编译选项 -- USE_LLVM build option: - USE_LLVM: ON/OFF/<path to llvm-config> {set in cmake/config.cmake, and copy into build/} 1. 执行…

Linux系统上安装VScode且配置C/C++环境

Linux系统给人的印象一直是命令行的形式&#xff0c;今天终于长了见识&#xff0c;其实Linux系统也可以像Windows系统一样&#xff0c;安装、使用VScode软件 1 进入VScode官网下载VScode Linux安装版2 将下载到电脑上压缩包通过tcp指令传到Linux系统上3 在放置安装包的目录下通…

java实现文档部分预览与全预览功能

这里使用的是kkFileView插件&#xff0c;部署在服务器上&#xff0c;使用其生成预览内容&#xff0c;官网地址是&#xff1a;kkFileView - 在线文件预览 下载地址为&#xff1a;kkFileView 4.1.0 版本发布&#xff0c;开源在线文件预览解决方案 - OSCHINA - 中文开源技术交流社…

ANR日志分析全面解析

一、概述 解决ANR一直是Android 开发者需要掌握的重要技巧&#xff0c;一般从三个方面着手。 开发阶段&#xff1a;通过工具检查各个方法的耗时&#xff0c;卡顿情况&#xff0c;发现一处修改一处。 线上阶段&#xff1a;这个阶段主要依靠监控工具发现ANR并上报&#xff0c;比…

linux(system V标准)进程间通信2

目录&#xff1a; 1.回顾上一节的代码 2.shmat、shmdt的使用 3.共享内存的大小为什么最好设置成4096字节的整数倍呢&#xff1f; 4.操作系统如何管理共享内存的 ----------------------------------------------------------------------------------------------------------…

SpringMVC04:数据处理及跳转

目录 一、跳转方式ModelAndView 二、ServletAPI 三、SpringMVC 四、数据处理&#xff1a;处理提交数据 1、提交的域名称和处理方法的参数名一致 2、提交的域名称和处理方法的参数名不一致 3、提交的是一个对象 五、数据显示到前端 1、通过ModelAndView 2、通过ModelM…

Nginx的使用和有关配置

&#x1f331;Nginx的基础使用和有关配置。 &#x1f4eb;相关软件:链接地址 文章目录 Nginx目录结构Nginx基本运行原理Nginx的基本配置文件 Nginx目录结构 [rootlocalhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp # POST 大文件…

dstat 好用的可视化工具

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 dstat 好用的终端工具 安装方法命令详解负载与CPU相关展示第一颗与第四颗cpu使用情况展示每秒的CPU时钟频率…

Elasticsearch:使用 Transformers 和 Elasticsearch 进行语义搜索

语义/矢量搜索是一种强大的技术&#xff0c;可以大大提高搜索结果的准确性和相关性。 与传统的基于关键字的搜索方法不同&#xff0c;语义搜索使用单词的含义和上下文来理解查询背后的意图并提供更准确的结果。 Elasticsearch 是实现语义搜索最流行的工具之一&#xff0c;它是一…

【运筹优化】元启发式算法详解:变邻域搜索算法(Variable Neighborhood Search,VNS)+ 案例讲解代码实现

文章目录 一、介绍二、基本方案三、一些扩展四、在VNS内改变配方4.1 基于变邻域的公式空间搜索4.2 变公式搜索 五、原始对偶VNS六、求解混合整数线性规划的VNS七、连续全局优化的可变邻域搜索八、可变邻域编程(VNP):自动编程的VNS九、Discovery Science十、总结十一、案例讲解&…

如何视频转语音?想知道视频转语音工具怎么用?

在教育、培训等领域中&#xff0c;有时候需要将讲解视频转化为文字来提供给学生反复阅读学习。那么&#xff0c;小伙伴们&#xff0c;你们知道怎样视频转语音吗&#xff1f;其实我们可以借助一些视频转语音的软件帮助我们实现视频转语音操作。这篇文章就给大家分享几个非常好用…

PHP学习笔记第二天

前言 作者简介&#xff1a;不知名白帽&#xff0c;网络安全学习者。 博客主页&#xff1a;不知名白帽的博客_CSDN博客-网络安全,CTF,内网渗透领域博主 网络安全交流社区&#xff1a;https://bbs.csdn.net/forums/angluoanquan 目录 PHP类型比较 和 PHP中比较0、false、null …

基于SSM的酒店管理系统代码数据库文件和LW

框架&#xff1a;SSM 数据库&#xff1a;MySQL 语言&#xff1a;Java 下载链接&#xff1a; https://download.csdn.net/download/yw1990128/87853243 B站演示链接&#xff1a; 基于SSM框架的酒店管理系统_哔哩哔哩_bilibili 1.1 课题研究背景及意义 随着我国改革开放的不…

hutool文件导出

hutool文件导出 需求&#xff1a;管理员设置会议&#xff0c;参加会议会根据管理员设置的会议要求&#xff0c;用户参加会议填写相关数据&#xff0c;并且生成一个动态的excel数据并导出 示例&#xff1a; 每场都可以自定义报名字段 根据需求与前端约定 字段名称&#xff08;n…

通用读写仲裁模块(FPGA实现)

当涉及多个模块向同一个模块进行读写操作、向一个半双工模块请求读写&#xff0c;甚至综合一下&#xff0c;多个模块向一个半双工模块发起读写请求&#xff0c;那就要涉及读写仲裁。因为最近做的项目中涉及的读写仲裁太多了&#xff0c;所以就想还是要写一个通用的读写仲裁模块…

网络协议系统学习

网络为什么要分层&#xff1f; 因为是个复杂的程序就要分层 可以把网络包想象成一个buffer或者一块内存&#xff0c;是有格式的。同时&#xff0c;想象自己是一个处理网络包的程序&#xff0c;而且这个程序可以跑在电脑/服务器/路由器/交换机上&#xff0c;自己有很多网口&am…

抖音seo优化源码搭建/搜索排名系统,技术理论分析搭建中。

抖音seo系统源码SaaS&#xff0b;源码私有化部署搭建&#xff0c;抖音seo源码&#xff0c;抖音seo系统源码&#xff0c;抖音seo系统搭建部署&#xff0c;抖音已经成为了当今最为流行的短视频平台之一&#xff0c;拥有着庞大的用户群体和海量的视频资源。对于一些商家或者运营者…

26岁,几乎零基础,想从基础学习渗透测试该如何进行?

要成为一名渗透测试员&#xff0c;想从基础学习需要先掌握下面这3块&#xff08;文末有相关自学资源推荐&#xff09;&#xff1a;1、学习硬件和网络 渗透测试主要涉及网络和部分涉及硬件。 2、操作系统和系统架构 操作系统和系统架构在渗透测试中起着关键作用。系统操作涉及x…

笔试强训6

作者&#xff1a;爱塔居 专栏&#xff1a;笔试强训 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起进步&#xff01; 1.下列关于ThreadLocal的描述中&#xff0c;错误的是&#xff08;&#xff09; A.ThreadLocal采用线程隔离的方式存放数据&#xff0c;可以避免多线…