[sourcetree] rebase的使用

2023-05-16

相关问题

最近写自己的辣鸡代码使用git时,因为个人不大熟悉git又是个强迫症,被来回不同的版本折腾来折腾去的,十分不爽,于是在此小结下sourcetree怎么使用变基。

变基rebase这个操作说白了就是,重新选定当前提交的根节点
而根据使用分支不同,也产生了不同类型的变基操作的需求。

解决方案

在不同分支之间使用变基

现在有master和dev两个分支:
分支结构
想要把dev分支变基到master上,形成一条干净整洁的直线。

切换到自己的dev分支:
在这里插入图片描述
右键点击master分支,选择交互式变基:
在这里插入图片描述
此处可以编辑变基后的各个提交的信息,以及是否把每个提交都变基,然后点击确定:
在这里插入图片描述
如果变基出现冲突(同个文件同一行前后版本不同),会报错(sourcetree感觉还是不够智能),需要自己手动解决,请不要点击右下角的关闭:(当然没有冲突就万事大吉也不需要以下操作)
在这里插入图片描述
按照指示先自己合并,先打开自己的文件,显示的是master尝试加入第一个dev提交产生的冲突信息:
在这里插入图片描述
删去多余的信息,留下“add dev 1”这次提交的有用代码,并保存就可以了:
在这里插入图片描述
然后打开sourcetree右上方的命令行模式,输入命令添加该文件:

git add me.txt
git rebase --continue

接下来会要求你填写“add dev 1”提交变基时的注释信息,根据自己需要更改或者不改,这里使用的是vim编辑器,输入i进入编辑模式,修改完成输入Esc返回,然后输入:wq保存即可:
在这里插入图片描述
修改成功后,这里同时提示接下来还要进行“add dev 2”的手动变基合并:
在这里插入图片描述
接下来进行“add dev 2”的变基合并,同理略。。。
最后输出这个信息说明成功了:
在这里插入图片描述
这时可以在sourcetree界面把报错界面关闭掉,你会发现已经变成一条直线:
在这里插入图片描述

在分支内部使用变基

当前分支树如图,当前所在分支为dev
在这里插入图片描述
想要把最近的一次提交”add dev 2…“的根节点之间变为”add 1“,简单的说就是删掉/合并(本文是删除)”add dev 1“和”master 2“。

首先,确认当前为dev分支,然后右键点击”add 1“,选择交互式变基:
在这里插入图片描述
右键选择删除中间两个节点(否则变基之后没有任何变化,因为本就属于一个分支),点击确认:
在这里插入图片描述
然后又出现了熟悉的画面,存在冲突时需要手动解决,注意不要关闭该窗口(否则操作会取消):
在这里插入图片描述
打开冲突的文件,手动解决冲突后,打开sourcetree报错界面的右上角命令行模式:
在这里插入图片描述
添加冲突解决后的文件,继续rebase,输入命令:
在这里插入图片描述
本文第一部分已提到,此处可修改commit信息,保存退出:
在这里插入图片描述
命令行提示successful即可,回到sourcetree关闭报错窗口结束,现在dev分支结构如图:
在这里插入图片描述

PS

sourcetree的交互式变基实质就是代替执行命令行的git reabse -i,还可以实现很多其他的功能,比如历史记录的删除、排序、修改、拆分、合并等等,利用sourcetree的gui都可以实现,但是出现文件冲突时还需要手动进行命令行的调整(要是能完全脱离命令行就好了)。

个人使用sourcetree体会

  1. 很多时候使用sourcetree,莫名其妙的总是各种错误,如果不需要本地的未提交修改,可以直接用sourcetree的丢弃命令,并且点重置所有,即可以从合并状态中退出。但如果要退出rebase状态,还是需要进入命令行输入git rebase --abort来终止
  2. 很多时候一不小心rebase或者reset,又或者执行某个命令又想撤销,任何历史信息都可以在命令行输入git reflog查询,并用git reset <id> 即可恢复之前的版本
  3. 任何突发的任务来临,首先用git stash封存当前状态,然后就可以丢弃本地修改去干临时的任务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[sourcetree] rebase的使用 的相关文章

  • 如何根据每次提交的日期将两个分支合并为一个分支?

    假设我有一个 git 存储库 如下所示 merge base A1 A2 A3 A4 branchA B1 B2 branchB 为了让事情变得更简单 假设分支上的提交是对 fileA 的严格修改 而分支上的提交是对 fileB 的严格修改
  • 当更漂亮的格式应用于整个项目时如何变基

    有人将整个代码库中更漂亮的格式更改合并到我们的master main develop branch 我现在正在尝试重新调整最新的master main develop分支 并解决合并冲突 由于冲突只是由运行 prettier 格式化代码引起
  • 退出状态为 0 但 autostash 需要手动合并

    当我做 git pull rebase autostash 有时我会收到一条消息 指出应用存储时存在冲突 我需要手动合并它 我关心的是退出状态是0 如果自动存储没有完全重新应用 如何获得非零退出状态 使用非零退出代码您无法区分pull错误来
  • '忽略' git rebase '他们的' 中的二进制文件

    我想从此走下去 A B C D E F G 其中 Branch1 指向 E Branch2 指向 G to this Branch1 A B C D E Branch2 F G 我希望 Branch2 始终 获胜 我已经做到了这一点 git
  • 如何使用 sourcetree 进行恢复?

    如果您使用 sourcetree 恢复到先前提交的过程是什么 请不要使用命令行帮助 我了解如何在那里实现相同的结果 但我特别希望使用我友好的 atlassian 工具来实现这一点 你所说的恢复到底是什么意思 您可以提交一个反向提交右键单击提
  • Git 无法锁定引用“HEAD”:无法解析引用 HEAD

    我正在尝试将更改提交到我的存储库 但收到以下错误 git c diff mnemonicprefix false c core quotepath false commit q F C Users Contronym AppData Loc
  • 变基以及变基推送提交意味着什么

    人们常说 您不应该对已经推送的提交进行变基 这可能意味着什么 To understand this we need to understand a bit about how git works A git repository is a
  • git 的 -X “他们的” 不处理新的/删除的文件冲突吗?

    以下场景来自this https stackoverflow com questions 4507288 ignore binary files in git rebase theirs问题 我正在执行git rebase s recurs
  • git rebase 和删除的 rebase 分支导致“交互式 rebase 已启动”错误消息

    我当时正在尝试使用几个分支进行一些操作 因此我在一个临时分支上重新建立了基础 并且当我决定不以另一种方式完成重新建立基础时 我正在解决一些冲突 然后我删除了涉及的临时分支并继续我的快乐之路 几个小时后 我想重新建立另一个分支并收到此错误消息
  • Git Rebase 期间的 Git Commit - 到底发生了什么?

    我正在寻找一个很好的描述 说明如果在变基期间提交会发生什么 以及如何以一种简单的方式 恢复 这一情况 让我们考虑一个场景 其中一个大型提交被重新设定 在变基期间出现冲突 用户开始合并更改 现在 想象一下这样一个场景 你快完成了 但你没有打电
  • git rebase时进入vim时如何开始打字? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 使用 Powershell 5 时 当我键入git rebase i
  • 删除 Github 上使用 提交的

    我在 github 上有一些提交 如下所示 有没有一种方法可以重新设置基准 以便我可以摆脱这个问题并简单地将提交标记为由我标记 首先我会检查你的 git 是否配置了正确的用户信息 跑步git config list以验证一切是否正确 您还可
  • 防止 Master Branch 领先于 dev

    我们有一个非常标准的 git 工作流程 但我对一件事感到恼火 master 领先于开发 因为每次部署我们都会创建从 dev 到 master 的合并提交 首先我们的工作流程 master branch 始终干净并可用于部署 developm
  • 如何将图标添加到我的存储库?

    我发现 Gitlab 和 SourceTree 支持每个存储库的图标 这使得它们更加具体且易于一眼找到 这怎么可能 作为开发人员 我们有时需要进行更改以使我们的工具看起来有所不同 你可以添加一个小的 我更喜欢96px x 96px logo
  • Mercurial 变基场景

    我读过变基项目 http mercurial selenic com wiki RebaseProject页面并尝试了一个不平凡的例子 不是对一个完整的分支进行变基 和这个案例很相似重新建立 D 基础 我场景 B 的情况 这是 rebase
  • 使用 Cygwin 的 Git 克隆项目时出现问题

    当我尝试使用 Cygwin 的 Git 2 7 0 克隆项目时 我遇到了一些与权限相关的问题 也就是说 每次我尝试运行克隆项目的可执行文件之一时 我都会收到下一个错误 Windows 无法访问指定的设备 路径或文件 您可能没有访问该项目的适
  • git 删除旧的提交

    我犯了一个愚蠢的错误 不小心将一个node modules文件夹提交到我的本地git 然后将其推送到github 这是一个巨大的文件夹 任何下载我的存储库的其他人也会在旧提交中下载此文件夹 我一直在尝试删除提交rebase onto and
  • 如何将最后 N 次提交压缩在一起?

    如何将最后 N 次提交压缩为一次提交 你可以很容易地做到这一点 无需git rebase or git merge squash 在此示例中 我们将压缩最后 3 个提交 如果您想从头开始编写新的提交消息 这就足够了 git reset so
  • `git svn rebase` 与 `git rebase trunk`

    我正在开发一个使用 subversion 作为存储库的项目 因为我需要进行一些还无法发送到 svn 服务器的更改 所以我开始使用git svn这样我就可以进行本地签到 我的设置如下所示 分支机构 trunk 跟踪 svn trunk mas
  • Git rebase 分支与所有父分支(或依赖子分支)

    是否可以使用 Git 来对分支及其所有父分支进行变基 我认为 父分支 是在这里使用的正确形式 根据您的观点 您也可以将它们称为依赖子分支 但是 遵循提交的父指针将让您到达这些分支 所以恕我直言称它们为 父分支 是公平的 我经常使用分支作为快

随机推荐

  • Redis哨兵模式(一主二从三哨兵)

    目录 一 redis环境 xff1a 二 哨兵介绍 xff1a 三 安装redis 四 使用Redis主从复制的作用 xff1a 五 配置redis一主二从 xff1a redis启动前的准备工作 xff1a 六 配置redis三哨兵 xf
  • 微信登录的接口

    目录 第一步 xff1a 生成微信扫描二维码 网页内嵌的二维码 接口第二步 xff1a 处理微信回调 xff0c 获取扫描人信息 微信开放平台 xff1a https developers weixin qq com doc oplatfo
  • Linux安装MongoDB(简单详细)

    目录 MongoDB 安装环境1 下载 MongoDB 的linux安装包2 上传 MongoDB 安装包到linux系统中 xff1a 3 解压 MongoDB 安装包4 创建 MongoDB 必要目录5 移动 MongoDB 安装目录6
  • 镀镍的工艺

  • Solidworks学习一

    目录 页面介绍 xff1a 视图操作 xff1a 实例圆柱 xff1a 直线的绘制 xff1a 草图的保存和不保存 xff1a 绘制工具 xff1a 切线弧 xff1a 转换实体引用 xff1a 交叉曲线 xff1a 等距实体 xff1a
  • 螺纹的标记

    M2 xff1a 螺纹孔的画法 例如M2的螺纹 怎么画螺纹孔 1 外螺纹 xff0c 大径是螺纹标准值用粗实线画 xff0c 小径用细实线画 在沿端面看时 xff0c 大径是整圆 xff0c 小径是3 4圆 2 内螺纹 xff08 螺纹孔
  • c#日志组件Serilog使用

    NuGet 安装 Serilog 核心的包是 Serilog 和 Serilog AspNetCore 建议安装 Serilog AspNetCore xff0c 几乎包含了Serilog常用的所有包 异步写入 Serilog Sinks
  • Zynq-7000系列之linux开发学习笔记:PS和PL端的GPIO使用(三)

    开发板 xff1a Zynq7030数据采集板 PC平台 xff1a Ubuntu 18 04 43 MobaXterm 开发环境 xff1a Xilinx Vivado 43 SDK 18 3 学习目标 xff1a PS通过 EMIO A
  • 人工智能革命(上):通往超级智能之路

    导读 xff1a 本系列文章讲述了人工智能革命的爆发以及人类未来的出路 xff0c 由于篇幅较长分为上下两篇 xff0c 原英文载于神奇的网站 WaitButWhy com xff0c 作者Tim Urban还写过一篇有关脑机接口的文章 N
  • kubelet源码分析

    做个笔记记录k8s中赫赫有名的LIST amp WATCH 其实之前的文章中都有过watch的身影了 分别是informer篇和configCh篇这两篇其实都共用了client go包中的LIST amp WATCH方法 这篇内容详细讲一下
  • Li‘s 核磁共振影像数据处理-20-FSL数学工具fslmaths

    讲解视频内容请移步Bilibili xff1a https space bilibili com 542601735 入群讨论请加v hochzeitstorte 请注明 核磁共振学习 公众号 xff1a 美好事物中转站 FSLeyes F
  • CentOS7 防火墙(firewalld、iptables)-端口相关问题

    firewalld Centos7默认安装了firewalld xff0c 如果没有安装的话 xff0c 可以使用 yum install firewalld firewalld config进行安装 1 启动防火墙 systemctl s
  • centos 7.5 安装桌面环境及报错

    一 查看运行级别 xff0c 输入命令 xff1a runlevel 二 查看centos7 5系统中没有是否安装过桌面环境工具 xff0c 输入命令 xff1a yum grouplist more 注 xff1a 此命令还显示了系统安装
  • Seata(一) 服务配置以及启动

    文章目录 Seata 介绍Seata 简介Seata 演进历史Seata 设计理念Seata 的三大组件seata 实现的 2PC 与传统 2PC 的区别 Seata Server 安装Seata Server 下载Seata Server
  • 新手入门:PyCharm 的使用

    初次接触 pycharm 不要怕 xff0c 这篇文章帮你快速入门 xff0c 点击收藏不迷路 相关文章 xff1a Windows 10 同时安装 Python 2 和 Python 3 推荐一个视频 xff1a pycharm使用教程
  • EntityFrameworkCore 运行时数据迁移

    EntityFrameworkCore 以后简称EFCore 是 net core的一个orm框架 xff0c 以前在 net framework中使用时候利用code first可以在程序运行的时候自动迁移数据库 xff0c 更新数据库表
  • query.unwrap(SQLQuery.class).setResultTransformer弃用

    替换为 query unwrap span class token punctuation span NativeQueryImpl class span class token punctuation span setResultTran
  • pyinstaller报错AttributeError: type object ‘Callable‘ has no attribute ‘_abc_registry‘

    遇到问题 xff1a pyinstaller 打包文件时失败 xff0c 报错 xff1a AttributeError type object Callable has no attribute abc registry 解决方法 xff
  • Mysql数据库完全备份与恢复

    一 数据备份的重要性 在生产环境中 xff0c 数据的安全性是至关重要的 xff0c 任何数据的丢失都可能产生严重的后果 造成数据丢失的原因如下 程序错误人为错误计算机失败磁盘失败灾难 如火灾 地震 和盗窃 二 数据库备份的分类 1 从物理
  • [sourcetree] rebase的使用

    相关问题 最近写自己的辣鸡代码使用git时 xff0c 因为个人不大熟悉git又是个强迫症 xff0c 被来回不同的版本折腾来折腾去的 xff0c 十分不爽 xff0c 于是在此小结下sourcetree怎么使用变基 变基rebase这个操