当前位置: 首页 > news >正文

SourceTree 交互式变基(rebase) 合并压缩提交

目录

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

零. 前置条件

0.1 💥超级注意事项💥

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

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

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

0.2 开启强制推送

⏹默认情况下,推送代码时的【强制推送】是无法点击的,需要如下图所示手动开启才可以。


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

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 通过SourceTree操作

⏹如下图所示,有三条已经推送到远程仓库的提交,这三条提交只是对同一个文件进行修改。
现在想让其合并为一次提交,让提交记录更加的简洁。

⏹下面通过动图的方式进行展示,需要注意的是:

  • 当合并完成之后,会同时提示拉取代码和推送代码
    • 此时需要无视拉取代码
    • 因此如果此时拉取代码的话,就会把远程仓库端的合并之前的代码再次拉取到本地了
  • 合并完提交之后,直接推送代码的时候会报错
  • 因为修改了提交历史,所以需要强行推送,在提交的时候勾选【强制推送】的单选框就可以推送了。

2.2 通过Git命令行操作

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

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

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

git rebase -i HEAD~3

⏹效果如下

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

⏹ 直接推送的话,会发生如下图所示的错误,因为我们修改了提交历史,所以需要强制推送。

git push origin 分支名称 --force

⏹效果如下

http://www.jsqmd.com/news/486453/

相关文章:

  • 嵌入式知识篇---IMU(惯性测量单元)
  • Docker网络高级实战:隔离网络、检查路由表和自定义网络驱动
  • Python-flask安卓微信小程序农产品商城农贸市场信息管理与个性化菜谱推送系统vue
  • 2025年爬取上市公司高管、董事和监事简历、持股情况、任职情况变动数据(历年)
  • 董宝珍《精神经济学》PDF下载与阅读笔记分享 精神经济学PDF、精神经济学电子书、精神经济学下载、董宝珍精神经济学、精神价值理论
  • BeatBanker木马的复合攻击机制与移动安全防御研究
  • 密码学中的 GPU 加速 AES 算法探索
  • 上位机知识篇---显示框卡顿原因分析与分辨率优化方案
  • Linux 内核内存管理:虚拟地址空间、伙伴系统和块分配器
  • 进阶8 翻译47 单词40
  • 分析常见占用空间的文件类型:系统临时文件
  • 高校场景下税务钓鱼攻击的演化机制与多维防御策略研究
  • 数字孪生如何助力智慧工厂建设?
  • LeetCode 108. 将有序数组转换为二叉搜索树:解题思路+代码详解
  • 本地搜索(@vuepress/plugin-slimsearch替换vuepress-plugin-search-pro)
  • 汽车控制器之软件质量管理体系
  • 2026.3.15:bochs2.6.11(带debug)虚拟机安装和使用教程
  • Java 面试题大全(整理版)附答案详解
  • SpringBoot+Vue Spring boot社区医院管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 2026年食用植物调和油厂家推荐:河南省淇花食用油有限公司,多品类全系供应满足多元需求 - 品牌推荐官
  • 深度解析:RNN、LSTM与GRU如何破解锂离子电池SOH预测难题?
  • 食品行业节能烘干机优质品牌推荐:工业滚筒烘干机/带式干燥机/旋转闪蒸烘干机/桨叶干燥机/气流烘干机/流化床干燥机/选择指南 - 优质品牌商家
  • 二维数组矩阵
  • 快消行业经销商管理系统公司服务商推荐 - 麦麦唛
  • 长沙心理医院指南:真实案例分享与暖心选择
  • 基于微信小程序的足浴城会员消费管理系统Python-flask
  • 多模型场景下的成本治理指标体系
  • 三阶CRFB结构Sigma - Delta调制器:SD ADC入门实战
  • YOLO模型如何训练使用排水管道缺陷检测数据集 检测排水管道中支管暗接、变形、沉积、错口、残墙坝根、异物插入、腐蚀、浮渣、结垢、破裂、起伏、树根实现可视化评估及推理
  • Diffusion 模型训练机制深度解析:多步去噪、噪声监督与“防作弊”原理