SourceTree rebase(变基)的使用

参考资料

  1. 【Sourcetree】コミットを一つにまとめる
  2. 【Sourcetree】リベースする

目录

  • 前提
    • 0.1 merge与rebase
    • 0.2 merge合并分支
    • 0.3 rebase合并分支
    • 0.4 💥超级注意事项💥
  • 一. 代码已提交,未推送,交互式变基
    • 1.1 通过SourceTree操作
    • 1.2 通过Git命令行操作
      • 1.2.1 进入命令行终端,指定交互变基版本
      • 1.2.2 指定需要处理的提交
      • 1.2.3 指定提交信息
      • 1.2.4 查看修改效果
  • 二. 代码已提交,已推送,交互式变基
    • 2.1 通过命令行进行交互式变基,合并提交
    • 2.2 将合并的提交推送到远端
      • 2.2.1 遇到的问题
      • 2.2.2 通过命令行强制推送


前提

0.1 merge与rebase

⏹merge

  • 如果你希望保留分支的历史记录,并且不介意有合并提交。适用于团队合作时保留每个人的工作记录。

⏹rebase

  • 如果你希望保持提交历史的简洁和线性,适用于希望干净历史的项目。

🤔一般而言,如果你在自己的本地分支上进行开发,并且想要保持分支历史记录的干净和整洁,就可以使用git rebase。
而对于多人协作的项目来说,由于需要共享代码库,因此最好使用git merge来避免破坏其他人的历史记录。

0.2 merge合并分支

⏹下图是 merge 合并分支时前后版本变化的情况

  • merge 会创建一个新的合并提交,将两个分支的历史记录保留在一起。
  • 日志保存完整,不管你之前合并进来的那个版本有多少个提交历史,都会被完整的合并到目标分支。
  • 过多的提交合并到主分支之后,主分支的Graph会很乱。

在这里插入图片描述

0.3 rebase合并分支

⏹下图是 rebase 合并分支时前后版本变化的情况

  • rebase 会将分支上的更改重新应用在目标分支上,重写提交历史。
  • rebase 方式提交的版本历史是线性的,不会创建新的合并提交,历史记录非常干净。

在这里插入图片描述

⏹合并压缩

  • 在rebase 的时候还可以使用 squash 参数来压缩提交记录。
  • 例如下图,Feature 1 分支的 A、B、C 三个提交记录,使用 rebase squash 后会在主分支变为一个提交记录 F。

在这里插入图片描述

0.4 💥超级注意事项💥

❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌
❌❌❌避免在公共分支上使用 rebase❌❌❌❌
❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌❌

⏹不要在已经推送到公共仓库的分支上使用 rebase:变基会重写提交历史,这会使其他基于这些提交的工作分支出现冲突。
如果你在公共分支上使用 rebase,其他开发者可能会遇到合并冲突,并且需要强制拉取和合并他们的工作,这会带来很多不必要的麻烦。

⏹如果将本地分支的代码已经推送到远端,并且远端的代码并没有被合并到任何分支中,并且没有任何人基于你的分支进行开发,
此时rebase操作不会对别人的开发带来影响。


一. 代码已提交,未推送,交互式变基

1.1 通过SourceTree操作

🤔变基可以将多次本地提交合并为一次提交,简化提交履历。
💥注意:多次提交只是提交到本地Git仓库,并没有推送到远端仓库。

⏹如下图所示,我们分3次提交了代码到本地Git仓库,这3次提交都只是添加了console.log语句,
因此可以合并为一次提交然后推送到远端仓库

在这里插入图片描述

⏹交互式变基操作如下所示,选中要合并的提交的前一次提交,点击交互式变基功能,
然后将多次提交合并为一次。

在这里插入图片描述

1.2 通过Git命令行操作

⏹如下图所示,我们分3次提交了代码到本地Git仓库,这3次提交都只是添加了console.log语句
这次我们使用Git命令行的方式,将这三次提交合并为一次。

在这里插入图片描述

1.2.1 进入命令行终端,指定交互变基版本

⏹通过SourceTree的命令行模式进入Git命令行终端

在这里插入图片描述

⏹指定交互变基的版本为最近的3次提交
git rebase -i HEAD~3

1.2.2 指定需要处理的提交

⏹如下图所示,在vim模式下处理指定的提交

  • pick:保留该提交。
  • reword:保留该提交,但允许你修改提交信息。
  • edit:保留该提交,但在此提交暂停,允许你进行更改。
  • squash:将此提交与前一个提交合并,并保留两个提交的信息。
  • fixup:将此提交与前一个提交合并,但丢弃此提交的信息。
  • drop:删除该提交。

在这里插入图片描述

⏹如下图所示,指定后两次提交与第一次提交合并,同时丢弃后两次的提交信息

  • ffixup的简写

同时指定要修改提交的消息的版本

  • rreword的简写

在这里插入图片描述
⏹修改完成之后,在vim模式下按下ESC之后,输入wq保存

1.2.3 指定提交信息

⏹如下图所示又进入编辑提交信息的界面,编辑完成之后,同样在vim模式下按下ESC之后,输入wq保存

在这里插入图片描述

⇓⇓⇓⇓

在这里插入图片描述

1.2.4 查看修改效果

⏹如下图所示,提交记录变成了一个,提交更加整洁了!

在这里插入图片描述


二. 代码已提交,已推送,交互式变基

2.1 通过命令行进行交互式变基,合并提交

⏹如下图所示,有3次打印消息,都已经推送到远端。

在这里插入图片描述

⏹在git终端通过下面的命令对最近3次提交进行交互式变基。

git rebase -i HEAD~3

在这里插入图片描述

⏹效果如下

在这里插入图片描述

2.2 将合并的提交推送到远端

2.2.1 遇到的问题

⏹ 直接推送的话,会发生如下图所示的错误

在这里插入图片描述

2.2.2 通过命令行强制推送

git push origin 分支名称 --force

在这里插入图片描述

⏹效果如下

在这里插入图片描述

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

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

相关文章

【NLP实战】基于TextCNN的新闻文本分类

TextCNN文本分类在pytorch中的实现 基于TextCNN和transformers.BertTokenizer的新闻文本分类实现,包括训练、预测、数据加载和准确率评估。 目录 项目代码TextCNN网络结构相关模型仓库准备工作项目调参预测与评估 1.项目代码 https://github.com/NeoTse0622/Te…

怎么选流量套餐最划算呢,这篇文章建议收藏!

据小编了解,现在大多数用户手上都不止一张SIM卡,大部分都是双卡,甚至三卡了,那么,这些卡槽你真的利用对了吗? 这篇文章就告诉大家,如何更好的利用这两个卡槽,让你即省钱&#xff0c…

(02)Unity使用在线AI大模型(调用Python)

目录 一、概要 二、改造Python代码 三、制作Unity场景 一、概要 查看本文需完成(01)Unity使用在线AI大模型(使用百度千帆服务)的阅读和实操,本文档接入指南的基础上使用Unity C#调用百度千帆大模型,需要…

十五、C++11常用新特性—Lambda表达式

1.基本 这个好像是很好用的,其有以下有点: 声明式的编程风格:直接匿名定义目标函数或函数对象,不需要额外写一个命名函数或函数对象。简洁:避免了代码膨胀和功能分散,让开发更加高效。在需要的时间和地点…

Sentieon应用教程 | 唯一分子标识符(UMI)

介绍 本文介绍了使用Sentieon工具处理下一代测序数据的方法,同时利用分子条码信息(也称为唯一分子索引或UMI)。分子条码可以在测序之前在模板DNA分子的末端引入唯一标签,从而大大减少PCR重复和测序错误对变异调用过程的影响。 S…

影视迷必备:揭秘高效影视app开发幕后

影视迷必备的高效影视APP开发幕后涉及多个关键环节,从需求分析、规划设计、技术开发到测试上线,再到后续的运营与维护,每一个环节都至关重要。 一、需求分析 在开发影视APP之前,首要任务是进行深入的需求分析。这一阶段的主要目标…

CSS选择器(1)

以内部样式表编写CSS选择器&#xff0c;其主要编写在<head></head>元素里&#xff0c;通过<style></style>标签来定义内部样式表。 基本语法为&#xff1a; 选择器{ 声明块 } 声明块&#xff1a;是由一对大括号括起来&#xff0c;声明块中是一个一个的…

python-矩阵加法(赛氪OJ)

[题目描述] 输入两个 n 行 m 列的矩阵 A 和 B &#xff0c;输出它们的和 AB。矩阵加法的规则是两个矩阵中对应位置的值进行加和&#xff0c;具体参照样例。输入&#xff1a; 输入共 2⋅n1 行&#xff0c;第一行包含两个整数 n 和 m&#xff0c;表示矩阵的行数和列数 (1≤n,m≤1…

艺术创作的新维度:yicaiai照片风格化

艺术创作的新维度&#xff1a;yicaiai照片风格化 一、用户友好的设计理念 1.1 yicaiai照片风格化的核心设计理念 yicaiai平台以其创新的AI技术&#xff0c;颠覆了传统照片处理的方式&#xff0c;将艺术与科技完美融合。其核心设计理念在于赋予普通照片无尽的艺术潜力&#xf…

这3种人适合学习人工智能,看看你在不在其中?

人工智能&#xff08;AI&#xff09;的浪潮正席卷全球&#xff0c;它不仅是科技领域的一场革命&#xff0c;更是社会进步的重要推手。随着AI技术的不断成熟和应用领域的不断拓展&#xff0c;越来越多的人开始关注并渴望掌握这一前沿技术。那么&#xff0c;究竟哪些人适合学习人…

华为od机试真题 — 测试用例执行计划(Python)

题目描述 某个产品当前迭代周期内有N个特性&#xff08;F1, F2, ..., FN&#xff09;需要进行覆盖测试&#xff0c;每个特性都被评估了对应的优先级&#xff0c;特性使用其ID作为下标进行标识。 设计了M个测试用例&#xff08;T1, T2,...,TM&#xff09;&#xff0c;每个用例…

Richtek立锜科技可用于智能门铃的电源管理解决方案

新型的智能门铃不仅能满足呼叫、提醒的需要&#xff0c;还能在线监控、远程操作、闯入通知、记录过程&#xff0c;系统构成相对复杂&#xff0c;与传统门铃相比有了很大的改变。 从电源管理的角度来观察&#xff0c;满足这样需求的系统构成也相对复杂&#xff1a; 处于外置状态…

一个糟糕的决策带来无尽的折磨

一个糟糕的决策带来无尽的折磨 你也时常有这种感觉么&#xff1f;怎么每次迭代都让人感觉很费劲&#xff0c;很疲惫&#xff0c;似乎每次都要对之前的代码进行修改才能满足本次迭代的需求。 整个项目像是一团乱麻一样理不清楚&#xff0c;项目工程给人一次性纸杯的感觉&#xf…

雅思阅读 答题技巧和题型归纳总结 看着一篇就够了

下面给大家介绍一下雅思阅读中常见的十种题型&#xff0c;以及各个题型烤鸭们经常遇到的问题&#xff0c;最后介绍一下针对该题型的做题步骤与技巧&#xff0c;纯干货&#xff0c;认真阅读。 图:阅读理解选择题 第一种题型&#xff1a;选择题 选择题其实是在考你对于原文中提…

爬虫学习 | 02 认识爬虫spider

网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也被称为网页蜘蛛&#xff08;Spider&#xff09;、网页机器人&#xff08;Robot&#xff09;或爬虫&#xff08;Crawler&#xff09;&#xff0c;是一种自动浏览互联网的程序。它的主要任务是按照一定的算法扫描和访问…

MySQL篇:主从复制

概述 话不多说&#xff0c;直接上概念&#xff1a; DDL&#xff08;Data Definition Language&#xff09;语句&#xff1a; 数据定义语言&#xff0c;主要是进行定义/改变表的结构、数据类型、表之间的链接等操作。常用的语句关键字有 CREATE、DROP、ALTER 等。 DML&#xff…

【测试】总体测试计划(Word直接套用完整版)

测试目标&#xff1a;确保项目的需求分析说明书中的所有功能需求都已实现&#xff0c;且能正常运行&#xff1b;确保项目的业务流程符合用户和产品设计要求&#xff1b;确保项目的界面美观、风格一致、易学习、易操作、易理解。 软件全套文档过去进主页。 一、 前言 &#xff0…

C语言题目之打印菱形

文章目录 一、题目二、思路三、代码实现 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目 二、思路 本题目是要求打印菱形&#xff0c;对于这种打印的题目而言&#xff0c;我们能正确的写出代码&#xff0c;就得找到规律 第一步 我们先对整个菱…

【Python】基础语法(函数、列表和元组、字典、文件)

。一、函数 1、函数是什么 编程中的函数和数学中的函数有一定的相似之处。 数学上的函数&#xff0c;比如 y sin x&#xff0c;x 取不同的值&#xff0c;y 就会得到不同的结果。 编程中的函数是一段可以被重复使用的代码片段。 &#xff08;1&#xff09;求数列的和&…

【AI伦理挑战下的应对策略】构建隐私保护、算法公正与深度伪造管控机制

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、构建可靠的AI隐私保护机制 1.1 隐私保护的重要性 1.2 数据最小化与匿名化处理 1.3 …