Merge Or Rebase

news/2024/10/9 22:15:54

Merge Or Rebase

都具备分支间变更的能力:但是二者间实现手段大不相同

1. 实现手段

Merge(总是向前推进提交历史,并不会影响提交的原始状态)

我们在特性分支上,执行

# git 会以 我方、对方、以及双方最近公共祖先 对应的快照 ===> 执行三路合并生成新的快照
git merge master


三路合并生成新的快照

并基于此快照,创建一个连接 特性分支 feature 和 主干的合并节点

最后调整特性分支的指向

Rebase(整合变更,对提交历史进行重写)

我们在特性分支上,执行

# 1. git 会从双方最近的公共祖先开始,将特性分支每个提交对应的变更暂存起来,
# 2. 然后以主干分支指向的提交 为新起点,将暂存的变更按顺序,一一 还原成新提交
git rebase master
  1. git 会从双方最近的公共祖先开始,将特性分支每个提交对应的变更暂存起来,
  2. 然后以主干分支指向的提交 为新起点,将暂存的变更按顺序,一一 还原成新提交

    此时,特性分支的新起点,就像是从 C1 迁移到了 C6

2. 异同点

内容完全一致

二者却构建出了迥异的提交的历史

3. 日常开发中经常遇到的例子【开发者从 feature 发起 PR】

由于 master 分支也合入了新的提交,在 PR 中显示,feature 分支和主干间存在冲突而无法合并,此时开发者通常有2 种方式解决冲突问题

将 master 分支 merge 到 feature 分支,并在合并时解决冲突

这样做会在方法方法会在 feature 分支中引入一个合并提交(包含解决冲突所做的修改)

将 feature 分支 rebase 到 master 的最新提交,并在 rebase 过程中解决冲突

4. 交互式 Rebase【提交的重排、压缩、拆分、丢弃】

git rebase -i master

顺序调整

squash 命令(实现对提交的压缩)

drop 指令

5. rebase -i 综合应用

6. 注意点

Git rebase 在重设基线,修整历史的过程中,会产生新的提交替换老提交,谨记:
千万不要使用 rebase 处理已经被其它协作者引用的提交

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

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

相关文章

m基于Yolov2深度学习网络的螺丝检测系统matlab仿真,带GUI界面

1.算法仿真效果 matlab2022a仿真结果如下:2.算法涉及理论知识概要基于YOLOv2(You Only Look Once version 2)深度学习网络的螺丝检测系统,是一种高效的目标检测方法,它在计算机视觉领域被广泛应用,尤其适合于实时检测和定位图像中的螺丝等小型物体。YOLOv2相较于初代YOLO…

2024年13个最佳Scrum工具评测

本文将介绍2024年13个高级Scrum敏捷开发管理工具。Scrum 管理工具有:PingCode、Jira、Trello、Zoho Sprints、Active Collab、ProProfs Project、Scrumwise、ClickUp、Monday.com、QuickScrum、Yodiz、ScrumDo、nTask在过去几年中,Scrum方法论已成为敏捷项目管理的主要框架之…

鸿蒙开发前四章

鸿蒙开发前四章 第二章:开发环境搭建 首先要创建project,然后用Empty Activity模版,可以选visual(支持低代码可视化的开发)一个项目可以有多个module,new module选择同上,还可以导入module。第三章:开发一个harmonyOs应用 (1)创建一个新项目(用java写) 那么sdk版本…

06. C语言指针

【指针】 C语言使用数据名调用数据,数据名相当于C语言的直接寻址,直接寻址只能调用固定数据,而指针是间接寻址,指针存储了另一个数据的地址,使用指针调用数据时首先取指针存储的内存地址,之后使用此地址调用数据,使用间接寻址有如下几点优势:1.统一数据的调用方式,因为…

程序员天天 CURD,怎么才能成长,职业发展的思考(2)

接着上一篇:程序员天天 CURD,怎么才能成长,职业发展思考 上一篇写到了用年限来谈程序员的发展,在 4 - 6 年这个时间段需要做的一些事情,接着写这个时间段的。 第 4、5 年时候,你可能会做一些关于基层管理工作。这个时期会遇到一些困难。 这个时期,既要编写代码,又要做基…

git 服务端

1.安装gityum install -y git 2.查看版本git --version 3.创建用户useradd gitpasswd git 4.初始化仓库git init --bare /home/git/dataCollect.git 5.将拥有者改为gitgit init --bare /home/git/dataCollect.git

如何基于surging跨网关跨语言进行缓存降级

概述surging是一款开源的微服务引擎,包含了rpc服务治理,中间件,以及多种外部协议来解决各个行业的业务问题,在日益发展的今天,业务的需求也更加复杂,单一语言也未必能抗下所有,所以在多语言行业解决方案优势情况下,那么就需要多语言的协同研发,而对于协同研发环境下,…

AtCoder Grand Contest 001

D. Arrays and Palindrome 如果两个字符要求相同就给它们连边,对于一个长度为 \(x\) 的回文串,\(x\) 是偶数会连 \(x/2\) 条边,奇数会连 \(x/2 - 0.5\) 条边。 \(a\) 和 \(b\) 两个序列总和为 \(2n\),要让 \(n\) 个字符相同至少连 \(n - 1\) 条边,也就是奇数个数超过 \(2\…