git rebase

news2024/11/18 20:40:15

git rebase

rebase 是一个……我觉得很麻烦的指令,不过没办法,公司算是有个软规定必须要使用 rebase。

rebase 的功能和 merge 很像,不过它能够保持一个相对干净的历史,继续举个例子,假设现在有一个新的功能开发好了,需要将新功能合并到 main 中。

---
title: Merge Example
---
gitGraph
    commit
    commit
    branch feature-merge
    commit
    commit
    checkout main
    commit
    commit
    checkout feature-merge
    merge main
    commit
    checkout main
    commit
    checkout feature-merge
    merge main
    checkout main
    merge feature-merge

在这里插入图片描述

这是开发 A 决定做的事情,ta 总共从 main 上拉了两次,每次产生 conflict 之后都是用 merge 解决的问题,产生了 2 个 merge commits,最后将所有的功能推到了 main 上。

在这个过程中,A 虽然自己实现了 3 个 commits,不过因为 2 次 merge 造成的 commits,ta 一共向 main 提交了 5 个 commits。

---
title: Rebase Example
---
gitGraph
    commit
    commit
    branch feature-rebase
    commit
    commit
    checkout main
    commit
    commit
    commit
    merge feature-rebase

在这里插入图片描述

开发 B 决定使用 rebase,ta 虽然也产生了 merge conflicts,不过 ta 使用了 rebase 重写了历史,因此在提交上去的时候值提交了 2 个 commits。

看起来好像很方便,但是它造成了一个问题:feature-rebase 上的历史被重写了。

真实发生的小故事

下面这是一个之前碰到的真实事情……

---
title: Rebase Example
---
gitGraph
    commit
    commit
    branch feature
    checkout feature
    commit
    commit
    branch feature2
    checkout feature2
    commit
    commit
    checkout main
    commit
    commit
    checkout main
    merge feature

在这里插入图片描述

feature 已经开发了两个月了,所以老板决定将 feature 合到 main 上,并且使用 rebase 清理历史……这个就是我近期内的噩梦的开始……

因为我在实现 feature2……

rebase 之后 feature 上的历史倒是干净了,但是因为 feature 历史被改变了,单独落在 feature2 上的我其实失去了所有在 feature 上的 commits 历史。换言之,feature 上本来的历史在我现在的分支上是不存在的(hash 不一样),所以我需要一一比对原本在我这个分支上 commits……

下面是之前同事的一个 commits:

在这里插入图片描述

注意这三百多个文件,其中很多配置文件会反复出现……所以在尝试了 rebase 两三次,花了一个下午,大概只过了十几条 commits 之后,愤然创建了一个 draft,手动一个个 cv 文件,用时两天……

我们团队是 6 个人的团队,一两个月的时间里面就有了这么多的 commits,假设团队的数量再大一些,或者团队对于每个 PR/MR 的 commits 没什么限制……

所以我个人的建议就是,如果你的 commits 已经推到了云端,并且有已经被其他的同事所使用,那么就别 rebase 了……一旦 rebase 会对别的同事产生影响,同时搞乱他们本地的时间线。

但是如果你在本地做一个功能,并且你每天都从主分支上拉最新的变化,那么这个时候就可以使用 rebase,保持当前历史分支干净清爽,别一天创建 3 个 merge commits,但是 3 天才写一个功能 commit……

最后,有一个可互动的 rebase 指令是 git rebase -i <commit>,看了一下使用方法,会出现 squash、pick、reword 这些选项让你重新修改过去的 commit history:

大致效果如下:

在这里插入图片描述

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

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

相关文章

Golang Gin HTTP 请求和参数解析

gin 网络请求与路由处理 我们介绍了Gin框架&#xff0c;并做了Gin框架的安装&#xff0c;完成了第一个Gin工程的创建。 创建Engine 在gin框架中&#xff0c;Engine被定义成为一个结构体&#xff0c;Engine代表gin框架的一个结构体定义&#xff0c;其中包含了路由组、中间件、…

26- OCR 基于PP-OCRv3的液晶屏读数识别

要点&#xff1a; 液晶屏识别示例github 地址 1. 简介 本项目基于PaddleOCR开源套件&#xff0c;以PP-OCRv3检测和识别模型为基础&#xff0c;针对液晶屏读数识别场景进行优化。主要是针对各种仪表进行识别&#xff1a; 2 安装环境 安装Git&#xff1a;Git 详细安装教程 # 首…

YOLOv8 Bug及解决方案汇总

Traceback (most recent call last): File “D:\Anaconda\Scripts\yolo-script.py”, line 33, in sys.exit(load_entry_point(‘ultralytics==8.0.83’, ‘console_scripts’, ‘yolo’)()) self.model, self.save = parse_model(deepcopy(self.yaml), ch=ch, verbose=verbos…

基于 Python 的 Meta AI —— SAM

Segment Anything Model&#xff08;SAM&#xff09;是 Facebook 的一个 AI 模型&#xff0c;旨在推广分割技术。在我们之前的文章中&#xff0c;我们讨论了 SAM 的一般信息&#xff0c;现在让我们深入了解其技术细节。SAM 模型的结构如下图所示&#xff0c;图像经过编码器得到…

【致敬未来的攻城狮计划】— 连续打卡第十三天:FSP固件库开发启动文件详解

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 3.欲速则不达&#xff0c;今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

《Spring MVC》 第八章 拦截器实现权限验证、异常处理

前言 Spring 提供了Interceptor 拦截器&#xff0c;可用于实现权限验证、异常处理等 1、拦截器 对用户请求进行拦截&#xff0c;并在请求进入控制器&#xff08;Controller&#xff09;之前、控制器处理完请求后、甚至是渲染视图后&#xff0c;执行一些指定的操作 1.1、定义…

UGUI中点击判断的原理

首选需要理解 EventSystem 中的代码结构&#xff0c;EventSystem 目录下包含4个子文件夹&#xff0c;分别是 EventData、InputModules&#xff0c;Raycasters 和 UIElements&#xff0c;UIElements 下是 UI Toolkit 相关代码&#xff0c;这里不做研究&#xff0c;主要关注其他三…

linux文件及文件内容查找命令总结

在linux环境下&#xff0c;我们经常要查找一个文件或者文件的内容&#xff0c;但搜索的命令有很多&#xff0c;这些命令都有什么区别&#xff0c;应该怎么选择和使用呢&#xff1f; 下面总结了一些常见的文件查找、内容查找的命令&#xff0c;收藏起来备用吧。 文件查找 where…

每日学术速递4.25

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Long-Term Photometric Consistent Novel View Synthesis with Diffusion Models 标题&#xff1a;具有扩散模型的长期光度一致的新视图合成 作者&#xff1a;Jason J. Yu, Feresh…

Python入门教程+项目实战-11.3节: 元组的操作方法

目录 11.3.1 元组的常用操作方法 11.3.2 元组的查找 11.3.3 知识要点 11.3.4 系统学习python 11.3.1 元组的常用操作方法 元组类型是一种抽象数据类型&#xff0c;抽象数据类型定义了数据类型的操作方法&#xff0c;在本节的内容中&#xff0c;着重介绍元组类型的操作方法…

hive udf, tried to access method org.bouncycastle.math.ec.ECPoint$AbstractFp

在hive中添加加密udf,测试报错&#xff1a; select encrypt_sm2("aa","04AD9356466C7A505B3B2E18F2484E1F096108FA19C0F61C707A808EDF7C132BC3CE33E63D2CC6D77FB0A172004F8F5282CEADE22ED9628A02FE8FD85AF1EFE8B3"); Error: Error while compiling statem…

从0搭建Vue3组件库(九):VitePress 搭建部署组件库文档

VitePress 搭建组件库文档 当我们组件库完成的时候,一个详细的使用文档是必不可少的。本篇文章将介绍如何使用 VitePress 快速搭建一个组件库文档站点并部署到GitHub上 安装 首先新建 site 文件夹,并执行pnpm init,然后安装vitepress和vue pnpm install -D vitepress vue安…

什么是分库分表?为什么需要分表?什么时候分库分表

不急于上手实战 ShardingSphere 框架&#xff0c;先来复习下分库分表的基础概念&#xff0c;技术名词大多晦涩难懂&#xff0c;不要死记硬背理解最重要&#xff0c;当你捅破那层窗户纸&#xff0c;发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下&#xff0…

“星河杯”隐私计算大赛新闻发布会在京召开

4月24日下午&#xff0c;“星河杯”隐私计算大赛新闻发布会在京召开。本次大赛由中国信通院、中国通信学会、隐私计算联盟共同主办&#xff0c;中移动信息技术有限公司、联通数字科技有限公司、天翼电子商务有限公司、中国通信标准化协会大数据技术标准推进委员会联合协办&…

微信小程序 | 基于高德地图+ChatGPT实现旅游规划小程序

&#x1f388;&#x1f388;效果预览&#x1f388;&#x1f388; ❤ 路劲规划 ❤ 功能总览 ❤ ChatGPT交互 一、需求背景 五一假期即即将到来&#xff0c;在大家都阳过之后&#xff0c;截止到目前这应该是最安全的一个假期。所以出去旅游想必是大多数人的选择。 然后&#x…

Activity中startForResult的原理分析

前言&#xff1a; 如果使用androidX支持库中的ComponentActivity&#xff0c;会推荐使用registerForActivityResult的方式。但是对于不支持androidX的项目&#xff0c;或者就是继承自Activity的页面来说&#xff0c;startActivityForResult仍然是唯一的选择。 如果想了解andr…

虹科教您 | 虹科RELY-TSN-KIT操作指南(3)——基于Linux系统进行TSN协议测试

随着技术的变革和实际生产业务需求的推动&#xff0c;工厂内部互联架构逐渐趋于扁平化&#xff08;IT/OT融合&#xff09;&#xff0c;而TSN则是在这一背景下发展起来的新兴技术&#xff0c;旨在为以太网协议建立“通用”的时间敏感机制&#xff0c;以确保网络数据传输的时间确…

云计算服务安全评估办法

云计算服务安全评估办法 2019-07-22 14:46 来源&#xff1a; 网信办网站【字体&#xff1a;大 中 小】打印 国家互联网信息办公室 国家发展和改革委员会 工业和信息化部 财政部关于发布《云计算服务安全评估办法》的公告 2019年 第2号 为提高党政机关、关键信息基础设施运营者…

鸿蒙系统是什么?鸿蒙与开源鸿蒙的关系?鸿蒙系统的发展历程

鸿蒙OS分布式操作系统简介鸿蒙系统&#xff08;HarmonyOS)&#xff0c;是第一款基于微内核的全场景分布式OS&#xff0c;是华为自主研发的操作系统。现被华为捐献给开放原子基金会管理&#xff0c;为开放原子基金会下的一个项目。 从 系统定位 上来说&#xff0c;HarmonyOS是一…

explain都不懂?搞什么数据库优化,快进来学习了

文章目录 一、 前言二、MySQL EXPLAIN实战三、mysql EXPLAIN输出结果详解3.1 id详解3.2 select_type3.3 table3.4 partitions3.5 type3.6 possible_keys3.7key3.8 key_len3.9 ref3.10 rows3.11 filtered3.12 Extra 一、 前言 EXPLAIN 想必用过mysql的小伙伴都听过&#xff0c;…