git使用笔记(十一)rebase
By francis_hao Oct 22,2017
git-rebase,改变commit的基础参照
概要
git rebase [-i |
--interactive]
[options]
[--exec <cmd>]
[--onto <newbase>]
[<upstream>]
[<branch>]
git rebase [-i |
--interactive]
[options]
[--exec <cmd>]
[--onto <newbase>]
--root [<branch>]
git rebase --continue |
--skip |
--abort |
--edit-todo
描述
branch:工作分支,默认指向HEAD,如果指定了branch,rebase会在做其他事情之前自动执行git checkout branch,若没指定则会保持在当前分支。
upstream:要比较的上行分支,或者任何有效的commit,如果没有指定upstream,那么会使用配置文件里的branch.<name>.remote和branch.<name>.merge的值作为upstream。
--onto <newbase>:创建新commit的起点,如果没有指定该项,那么起点就是upstream。
当前分支会重置到upstream,或者newbase(如果指定了--onto选项的话),这个过程和git reset --hard的效果一样,然后在此基础上进行合并。
一个简单的例子:
当前分支在topic
对应的关系图
执行命令
git rebase --onto master master topic
分支变成了这样
对应的关系图
实际上这条命令概括起来就是:以master分支为参照,获取topic分支独有的内容(例中的b1和b2),再以新分支的形式合并到master(--onto指定)分支上去,也就是rebase的字面意思。
根据上面提到的省略规则,该命令在上述情况下可以简写为
git rebase master
rebase不止运用在分支上,也可以用在一个分支的多次提交中,用于合并多次提交,但是命令的形式比较费解,一般都是用rebase的交互模式。
交互模式
当前分支上有若干commit
指定你想保留的最后一个commt,并且进入交互模式
git rebase -i <after-this-commit>
会打开一个文件编辑器,内容大致如下
修改后的内容,第一条不能是squash和fixup,因为必须有要依存的基础。
之后按照默认的操作,就变成了这样,完成压缩
其中第一列的命令可以是一下内容
命令 |
含义 |
p, pick |
使用该条commit |
r, reword |
使用该条commit,但是修改提交信息 |
e, edit |
使用该条commit,但是过程中会停下来以方便修改一些属性 |
s, squash |
使用该条commit,但是会结合到以前的提交中 |
f, fixup |
类似squash,但是会丢弃该条提交的记录信息 |
x, exec |
使用shell运行命令 |
常用选项
选项 |
含义 |
--continue |
在处理了合并冲突后,重新开始rebase程序 |
--abort |
终止rebase操作,并回到开始前的状态 |
--skip |
跳过当前的patch并重新开始rebase程序 |
--stat |
显示从上一次rebase之后的改变情况 |
其他详情见参考【1】
本文由 刘英皓 创作,采用 知识共享署名-非商业性使用-相同方式共享3.0中国大陆许可协议 进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/7712035.html
参考
【1】git help rebase
git使用笔记(十一)rebase的更多相关文章
- 《Pro Git》笔记3:分支基本操作
<Pro Git>笔记3:Git分支基本操作 分支使多线开发和合并非常容易.Git的分支就是一个指向提交对象的可变指针,极其轻量.Git的默认分支为master. 1.Git数据存储结构和 ...
- git入门笔记汇总——(廖雪峰博客git入门)
本文内容是对廖雪峰老师Git教程做的笔记,外加一些自己的学习心得,还抱着学以致用的心态来实践一番 如有显示错误 请移步本人github:git教程小结 Git学习笔记 Git简介 安装Git 创建版本 ...
- 【Git 使用笔记】第四部分:git在公司中的开发流程
先声明几个变量 仓管A:主分支,只有master分支仓管B:开发分支,只有各个业务开发分支 仓管B fork 于 A 如下图 为了保证 代码的稳定性,只有 仓管B中的某个分支测试完毕并进行了代码r ...
- 【Git 使用笔记】第三部分:多分支开发
###举例仓库 仓库地址A:git@gitlab.54php.cn:guowei/demos.git 仓库地址B:git@gitlab.54php.cn:infra/demos.git 开发人员仓库C ...
- 【Git 使用笔记】第二部分:基本命令 和 单分支开发
git 基本命令 git add . git commit -am "请填写你NB的备注" git fetch --all git fetch -p //如果远程分支删除了,本地 ...
- git实践笔记
title: git实践笔记 date: 2016-10-15 18:40:26 tags: [Git] categories: [Tool,Git] --- 概述 本文记录常用 git 的功能和命令 ...
- GIT学习笔记(5):变基
GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...
- Pro Git 学习笔记
Pro Git 学习笔记 文档地址:Pro Git原文地址:PRO GIT 学习笔记 git常见命令 1.Git起步 初次运行Git前的配置 用户信息 git config --global user ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
随机推荐
- MySQL☞having子句
having子句:是跟group by结合使用,对分组以后的数据再次进行过滤,经常跟聚合函数结合使用 格式: select 列名/聚合函数 from 表名 where 条件 group by ...
- Python教程:Python中的for 语句
Python 中的 for 语句与你在 C 或 Pascal 中可能用到的有所不同. Python教程 中的 for 语句并不总是对算术递增的数值进行迭代(如同 Pascal),或是给予用户定义迭代步 ...
- JAVA 面试须知
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺. 1. Java中的原始数据类型都有哪些, ...
- Android开发-API指南-<path-permission>
<path-permission> 英文原文:http://developer.android.com/guide/topics/manifest/path-permission-elem ...
- Skype for Business Server 方案
方案说明: 高可用性的配置屏蔽了单点故障,使得当一个服务器节点失效时,另外的可用的节点能够进行服务的接管.可伸缩性的配置可以保证当即时沟通平台的使用用户增加时,该平台应该具有良好的可伸缩性,能非常方便 ...
- Java 单例模式探讨
以下是我再次研究单例(Java 单例模式缺点)时在网上收集的资料,相信你们看完就对单例完全掌握了 Java单例模式应该是看起来以及用起来简单的一种设计模式,但是就实现方式以及原理来说,也并不浅显哦. ...
- 第一章 Java Web应用开发技术
Java Web应用开发是基于JavaEE(JavaEnterprise Edition)框架的,而JavaEE是建立在Java平台上的企业级应用解决方案.JavaEES框架提供的Web开发技术主要支 ...
- 自定义View 和 ViewGroup
一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...
- 3dContactPointAnnotationTool开发日志(十七)
今天又改进了一下算法,把生成出来的接触点按中心坐标拍了个序,再把中心坐标一样的坐标点合并,x,y,z每个维度都只保留大的值.然后来看看效果: 先是1倍的,只剩下4096个接触点了,2^12个, ...
- html5 download all in one
html5 download all in one HTML5 download & Fetch API & File API & Blob https://scarletsk ...