git rebase小计

2023-11-09

http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html

git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。要搞清楚这个东西,要先看看版本库状态切换的两种情况:

  1. 我们知道,在某个分支上,我们可以通过git reset,实现将当前分支切换到本分支以前的任何一个版本状态,即所谓的“回溯”。即实现了本分支的“后悔药”。也即版本控制系统的初衷。
  2. 还有另一种情况,当我们的项目有多个分支的时候。我们除了在本地开发的时候可能会“回溯”外,也常常会将和自己并行开发的别人的分支修改添加到自 己本地来。这种情况下很常见。作为项目管理员,肯定会不断的合并各个子项目的补丁,并将最新版本推送到公共版本库,而作为开发人员之一,提交自己的补丁之 后,往往需要将自己的工作更新到最新的版本库,也就是说把别的分支的工作包含进来。

举个例子来说吧!假设我们的项目初期只有一个master分支,然后分支上作过两次提交。这个时候系统只有一个master分支,他的分支历史如下:

master0(初始化后的版本)
||
v
master1(第一次提交后的版本)
||
v
master2(第二次提交后的版本)

这个时候,我们可以通过git reset将master分支(工作目录、工作缓存或者是版本库)切换到master1或者master0版本,这就是前面所说的第一种情况。
假设我们这里把master分支通过git reset回溯到了master1状态。那么这个时候系统仍然只有一个master分支,分支的历史如下:

master0(初始化后的版本)
||
v
master1(第一次提交后的版本)

然后,我们在这里以master1为起点,创建了另一个分支test。那么对于test分支来说,他的第一个版本test0就和master1是同一个版本,此时项目的分支历史如下:

master0(初始化后的版本)
||
v
master1(第一次提交后的版本)===test0(test分支,初始化自master分支master1状态)

这个时候,我们分别对master分支、test分支作两次提交,此时版本库应该成了这个样子:

master0(初始化后的版本)
||
v
master1===test0==>test1===>test2
||
v
master2===>master3

  1. 这个时候,通过第一种git reset的方式,可以将master分支的当前状态(master3)回溯到master分支的master0、master1、master2状态。 也可已将test分支当前状态(test2)回溯到test分支的test0、test1状态,以及test分支的父分支master的master0、 master1状态。
  2. 那么。如果我要让test分支从test0到test2之间所有的改变都添加到master分支来,使得master分支包含test分支的所有修改。这个时候就要用到git rebase了。

首先,我们切换到master分支,然后运行下面的命令,即可实现我们的要求:

1
git rebase test

这个时候,git做了些什么呢?

  1. 先将test分支的代码checkout出来,作为工作目录
  2. 然后将master分支从test分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了
  3. 如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成
  4. 如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)。

此外,rebase还能够让你修订以前提交,这个功能日后再说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git rebase小计 的相关文章

  • GIT代码管理: git remote add

    这里主要以 如何将一份已经写好的代码提交到两个git远端 为例 xff0c 更好地理解git remote add这句 xff1b 首先要明白一句代码的意思 xff0c 以github最经常的提示为例 xff1a 在这张图面里git ini
  • git中的后悔方法:rebase,revert,reset

    http zhaojunde1976 blog 163 com blog static 12199866820136119201752 如果git中提交了错误代码 怎么办 有三种选择 rebase revert reset revert 用
  • [Git] 代码管理之 Git(六)Git rebase 压缩提交历史

    我们在工作中 可能会出现这样的情况 一项工作由好几个同事同时完成 然后每个人针对当前的feature都有对应的提交 那么就会造成同一个feature有多次提交的这样的冗余存在 除此之外 如果我们自己针对同一个feature的每天的提交以及一
  • Git删除本地在远端已经删除的分支

    git remote prune origin
  • 论git中使用https和ssh协议的区别

    论git中使用https和ssh协议的区别 SHELDON CUI S BLOG 2017 09 08 git https ssh 心得 http好还是ssh好 git可以使用四种主要的协议来传输资料 本地协议 Local HTTP 协议
  • 前端自动埋点

    起源是在测试时候没有报错 系统功能不正常 和测试查找错误很麻烦 埋点就是在某个功能函数里上报一些信息 比较类试express的中间件机制 但是没有操作的权限 自定义express的打印日志中间件 app get req res gt con
  • 代码管理_阿里如何管理代码分支

    文章转载自 https mp weixin qq com s 0N3isbSZL4fM5HjZo1aafA 背景 在阿里内部 流行着许多有意思的工程实践 有些实践通过工具和流程嵌在集团的大环境里 外界不容易复制 有些实践则是流露在大家的日常
  • linux下svn命令大全

    1 将文件checkout到本地目录 svn checkout path path是服务器上的目录 例如 svn checkout svn 192 168 1 1 pro domain 简写 svn co 2 往版本库中添加新的文件 svn
  • git解决代码冲突、合并代码

    共同开发时提交代码会遇到代码冲突 第一次遇到就手足无措的我 打算写一篇博客记录下来 下次遇到稳如老狗 一 远程代码已有更新记录 忘记拉取远程代码 直接提交 单人开发时 我没有先拉远程代码再提交的习惯 千万不要学习 一定要先拉代码再提交 导致
  • win10 VS code 编译运行 C/C++的方法

    win10 VS code 编译运行 C C 的方法 具体配置过程如下链接 https zhuanlan zhihu com p 35178331 但中间出了点问题 CTRL ALT n 运行后 PS D C gt cd d C if gc
  • Window下CodeStriker Server的搭建

    Windows下Codestriker Server的搭建分为以下几个步骤 1 安装Perl解析器 这里以ActivePerl为例 安装没有什么难度 主要是用安装以后GUI的PPM去下载相关的PM组件 2 安装数据库并为codestrike
  • Gitlab的API调用

    1 概述 Gitlab作为一个开源 强大的分布式版本控制系统 已经成为互联网公司 软件开发公司的主流版本管理工具 使用过Gitlab的都知道 想要提交一段代码 可以通过git push提交到远程仓库 也可以直接在Gitlab平台上修改提交
  • 常用命令图解 & & git 错误 fatal: Not a valid object name: ‘master‘.

    亲测可用 若有疑问请私信 常用命令图解 转自Git 常用命令详解 二 阳光岛主的博客 CSDN博客 git命令 Git 是一个很强大的分布式版本管理工具 它不但适用于管理大型开源软件的源代码 如 linux kernel 管理私人的文档和源
  • [YOLO专题-28]:YOLO V5 代码管理 - 如何与官网协同开发自己的项目代码

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122519479 目录 前言
  • git submodule的使用

    开发过程中 经常会有一些通用的部分希望抽取出来做成一个公共库来提供给别的工程来使用 而公共代码库的版本管理是个麻烦的事情 今天无意中发现了git的git submodule命令 之前的问题迎刃而解了 添加 为当前工程添加submodule
  • git rebase小计

    http www cnblogs com kym archive 2010 08 12 1797937 html git rebase 顾名思义 就是重新定义 re 起点 base 的作用 即重新定义分支的版本库状态 要搞清楚这个东西 要先
  • git-常见问题解决方法(全)

    git使用过程中遇到的问题解决方法记录 问题 1 更新代码后显示 unable to unlink old xxx xxx xx invalid argument 问题原因 要提交或更新的文件被系统线程占用 解决方法 把相关服务暂停 重新p
  • github token个人令牌

    remote Support for password authentication was removed on August 13 2021 remote Please see https docs github com en get
  • 太方便了,钉钉上就可完成代码发布审批啦!

    如今 不少企业的发布流程要求代码发布到生产环境前需要经过审批 这种发布审批流程 对企业的的CI CD工具提出了新要求 CI CD步骤里需要支持人工卡点审批 并在人工卡点审批通过后能自动触发后续的部署工作 云效流水线Flow发布审批示例 如上
  • 【Inno Setup】判别系统版本

    Code function IsXP32 Boolean var Version TWindowsVersion S String begin GetWindowsVersionEx Version S 主版本号 IntToStr Vers

随机推荐

  • Scala中的apply方法

    1 apply的场景 Scala中实例化一个类 可以不用new 其原因 其实就是 apply 方法 具体原因 后边再讲 在上句中Scala 生成Array对象 会自动去调用 Array 这个伴生对象的 伴生类中的apply方法 Scala中
  • NetworkManager is not running

    nmtui 提示 NetworkManager is not running 启动 sudo service network manager start 提示 Redirecting to bin systemctl start netwo
  • python+vue+django考研信息查询辅导学习指南系统

    系统分为学生 管理员 导师三个角色 学生的功能是注册登陆系统 查看考研资讯 学校 专业 项目等信息 在线交流 联系客服 申请设备 导师对学生的申请设备进行审核 管理员对学生 资讯 导师 专业 学校 设备 项目等信息进行管理 管理员的主要功能
  • [机缘参悟-101] :IT人 - 遵从世界本源的样子,不带个人情感、道德、认知倾向,接纳一切,你就拥有无限的力量

    目录 道的本义 如来的本义 观音的本义 无为而治本质是顺势而为 儒家的本质 感悟 道的本义本质 天地的力量和运行规律 天地以万物为刍狗 是出自 道德经 第五十章的一句话 在这句话中 天地 指的是宇宙 万物 代表着宇宙中的一切生物和事物 而
  • 本地上传文件到github报错

    rejected master gt master non fast forward error failed to push some refs to https github com linanyways myProject git h
  • Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).

    我用的是F103ZET6的板子 移植成功后 编译出现两个错误是关于stm32f10x it c 里 void SVC Handler void void PendSV Handler void 两个函数的占用问题 随后编译出现以下两个问题
  • html iframe 传递数据,IFrame传入POST参数。

    我有一个API 比如http XXX test 只支持POST请求 需要传类似如下的参数才能拿到结果 id 12 userInfo name amy age 13 map fieldName AA mapName AAA fieldName
  • instanceof,isInstance,isAssignableFrom的区别,以及isAssignableFrom()详解

    一 isAssignableFrom详解 这个方法我觉得是不好理解 感觉命名不对劲 不知道是不是错觉 Class类的isAssignableFrom Class cls 方法 如果调用这个方法的class或接口 与 参数cls表示的类或接口
  • 群晖NAS和绿联NAS的Docker安装odoo16社区版和企业版教程

    社区版安装 1 在群晖后台安装好docker套件 并去控制面板 终端机和SNMP打开SSH功能 绿联nas的同样进管理界面安装docker套件 绿联打开SSH方法是在设备 远程调试下面 把远程调试打开 然后就会跳出来 验证码 然后下面这一段
  • form表单传值之Form表单对象

    function check var formData new FormData formData append name input name name val formData append pid select name pid va
  • win服务器创建文件夹命令行,怎样在windows的cmd命令行下创建删除文件和文件夹...

    在window下我们往往通过 右键 gt 新建 命令来创建文件和文件夹 但有时会遇到 以点开头的文件 比如 log 这种文件用鼠标新建是新建不了的 这时我们可以在DOS下用命令行来创建 所以在这里我将平时在dos里创建文件和文件夹的方法列举
  • 为什么应该用模块取代C/C++中的头文件?

    原文地址 http www csdn net article 2012 11 28 2812274 module replace C based languages headers 本文整理自Apple C 工程师Doug Gregor的演
  • 关于“异步复位,同步复位,异步复位同步释放”的理解

    文章目录 1 异步复位 2 同步复位 3 异步复位同步释放 今天好好理一理异步复位 同步复位 以及亚稳态中的异步复位同步释放 1 异步复位 一般让复位信号低电平有效 复位信号不受时钟的控制 只要复位信号有效 那么电路就会复位 对应的写法为
  • 十五、Redis——网络模型

    目录 1 1 用户空间和内核态空间 1 2 网络模型 阻塞IO 1 3 网络模型 非阻塞IO 1 4 网络模型 IO多路复用 总结 编辑 1 5 网络模型 信号驱动IO 1 6 网络模型 异步IO 1 7 同步和异步划分 1 8 Redis
  • React根据条件渲染不同的组件

    最近在做一个电商后台管理项目 碰到了一个要根据前面的条件不同来渲染不同的组件 如下图所示 要根据商品的分类来显示不同的商品属性 最开始以为简单的使用switch来判断条件即可 但是在react组件当中 一个函数是不能返回另一个函数的 这就导
  • linux 命令之nc

    nc使用示例 端口扫描nc v w 2 192 168 2 34 z 21 24nc connect to 192 168 2 34 port 21 tcp failed Connection refusedConnection to 19
  • 数字后端基本概念介绍——Track

    今天要给大家介绍的数字后端基本概念是Track Track是指走线轨道 和row一样 可以约束走线器的走线方向 信号线通常必须走在track上 Std Cell的高度通常用metal2 track pitch来表示 常用的 std cell
  • 出租车费

    题目描述 某市出租车计价规则如下 起步4公里10元 即使你的行程没超过4公里 接下来的4公里 每公里2元 之后每公里2 4元 行程的最后一段即使不到1公里 也当作1公里计费 一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小 例
  • 关于 栈 和 队列,你还在犯迷糊吗?

    我是目录 1 队列 1 Queue 队列 2 Deque 双向队列 2 栈 从数据结构角度来看 栈 和 队列 都是一种特殊的线性结构 只是对 插入 删除 元素的方式做了限制 栈 先进后出 push pop peek 的时间复杂度都是 O 1
  • git rebase小计

    http www cnblogs com kym archive 2010 08 12 1797937 html git rebase 顾名思义 就是重新定义 re 起点 base 的作用 即重新定义分支的版本库状态 要搞清楚这个东西 要先