[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 rebase 会触发合并冲突?

    我已经克隆了一个远程存储库 创建了一个新分支b并开始工作并做出承诺 我也推了b分支 但我是唯一一个在这方面工作的人 一段时间后 我想在远程主分支上重新设置本地分支的基础 只是为了与系统可能发生的更改同步 请注意 我确信我是唯一处理这些特定文
  • 在单个谱系中变基多个分支的最简单方法

    我有两个分支位于上游 主控之上 一个分支以另一个为祖先 因此它们形成一条线 U1 upstream master A B fixes C D features 随后 upstream master 继续前进 U1 U2 upstream m
  • 如何根据每次提交的日期将两个分支合并为一个分支?

    假设我有一个 git 存储库 如下所示 merge base A1 A2 A3 A4 branchA B1 B2 branchB 为了让事情变得更简单 假设分支上的提交是对 fileA 的严格修改 而分支上的提交是对 fileB 的严格修改
  • git rebase 和 git push:非快进,为什么使用?

    我有一个分支应该可供其他贡献者使用 并且应该不断与主版本保持同步 不幸的是 每次我执行 git rebase 然后尝试推送时 都会导致 非快进 消息并中止推送 推到这里的唯一方法是使用 force 这是否意味着如果我的分支公开并且其他人正在
  • 为什么“git rebase -p”不保留冲突解决方案?

    Has the man page陈述关于git rebase preserve 合并冲突解决方案或对合并提交的手动修改不会保留 这有什么好的理由吗 这与存在的理由是一样的command git rerere Reuse recorded r
  • Git:如何将 rebase 与他们的策略结合使用

    基本上 我只想 重新 设置父级 假设提交A 特定提交 commitB 这是某个分支的根提交x 建议here在其中一个答案中 我可以通过移植来做到这一点 稍后我会尝试一下 也许这是更好的方法 然而 在阅读本文之前 我认为这应该可以通过reba
  • 如何 git commit --amend 作为分支基础的提交

    我有 master head 的分支 foo 我想修改 master head 并让这些更改在分支 foo 上生效 我做了以下事情 git checkout master git add git commit amend git check
  • git rebase 错误(“无法应用...”)

    我是 GitHub 存储库的管理员https github com plison opendial https github com plison opendial 我想减少存储库上的提交数量 因为存储库已经有几千个提交 其中许多是小的调试
  • 我可以重新调整旧的提交吗?

    我刚刚开始使用 git Rebase 是很棒的东西 我应该在之前的特定案例中使用它 为了清晰的提交 是否有一种完全可以接受的方法来重新调整旧提交的基础 您应该只对尚未推送到上游的提交执行此操作 也就是说 我发现最容易使用git rebase
  • `git rebase` 不更新分支?

    我有这个 master foo v v bar A B C D v E F G 我要这个 master foo v v bar A B C D v E F G so I我认为我需要做 git checkout bar git rebase
  • 按日期重新排序 git 提交历史记录

    我已将 3 个不同的 git 存储库合并为一个 现在我的历史看起来像这样 A1 A2 A3 B1 B2 B3 C1 C2 C3 现在我想按日期重新排序所有这些提交 所以最后可能是这样的 C1 A1 A2 B1 C2 你明白了 如果我丢失了所
  • 从失败的变基中恢复

    我在用着git svn通过公司指定的 svn 服务器获得一些 git 的好处 我刚刚有一个 rebase 出了严重的问题 我正在努力找出最好的恢复方法 事情是这样的 首先 我有这个 1 master B C D E feature fix
  • git rebase时进入vim时如何开始打字? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 使用 Powershell 5 时 当我键入git rebase i
  • 当 git pull 引起冲突但 git pull --rebase 没有冲突时,这意味着什么?

    我正在从只有我有权访问的存储库中提取数据 据我所知 我只从一个存储库推送到它 有几次 我尝试推动它并得到了这个 To email protected cdn cgi l email protection tsched dev git rej
  • 防止 Master Branch 领先于 dev

    我们有一个非常标准的 git 工作流程 但我对一件事感到恼火 master 领先于开发 因为每次部署我们都会创建从 dev 到 master 的合并提交 首先我们的工作流程 master branch 始终干净并可用于部署 developm
  • 陷入 git rebase 困境......如何重置

    我正在进行 git rebase 但我陷入了困境 我不记得到底发生了什么 但我正在使用用户界面并删除了一个签出的分支 事情似乎变得空白 我重新启动并设法做了一些其他工作 创建和提交到其他分支等 但后来我注意到一个状态说我仍然处于变基过程中
  • 执行 rebase 后,Git 提交会在同一分支中重复

    我理解 Pro Git 中提出的场景是关于变基的危险 https git scm com book en v2 Git Branching Rebasing rebase peril 作者基本上告诉你如何避免重复提交 不要对已推送到公共存储
  • 如何修复 GitHub 拉取请求中被 git rebase 破坏的提交顺序?

    当我编写代码时 我会将其分解为小的逻辑更改 以便轻松快速地进行审查 为此 我使用git rebase i 交互式 压缩 删除和更改提交的顺序 我注意到这有时会导致 GitHub 拉取请求的提交顺序不同 尽管该顺序保留在远程分支上 例如 co
  • 运行“git gui”时如何跳过“松散对象”弹出窗口

    当我运行 git gui 时 我会看到一个弹出窗口 上面写着 This repository currently has approximately 1500 loose objects 然后它建议压缩数据库 我之前已经这样做过 它将松散对
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的

随机推荐

  • 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这个操