Git分支变基-知识点整理记录
Git中分支的整合分为合并和变基两种。
变基是把一系列的提交按照原有次序依次应用到另一个分支上。而合并是把最终的结果合在一起。
一、变基原理
首先找到基底分支和当前分支的最近共同祖先,然后比对当前分支相对于共同祖先的历次提交,提取相应的修改保存为临时文件。接着将当前分支指向基底分支。最后将之前保存为临时文件的修改依序应用。
二、变基意义
变基的作用就是整合两个分支。和merge合并比较起来,rebase变基可以让提交历史更加整洁。
三、变基命令
git rebase <baseBranch> //当前分支变基到baseBranch git rebase <baseBranch> <topicBranch> //topicBranch变基到baseBranch git rebase --onto <baseBranch> <branch> <topicBranch> //从topicBranch中拿出branch里没有的提交,将这些提交所做的修改,依序应用到baseBranch中
四、注意事项
如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。
因为变基的实质是丢弃一些提交,然后新建一些内容一样但实际不同的提交。你若将别人开发所基于的提交的丢弃了,那你就有大麻烦了,你的同事也会因此鄙视你。
但若真的发生这样的事情,也不是完全没有办法解决。
git fetch && git rebase <remote>/<branch> git pull --rebase
上述命令执行的操作是:
- 检查哪些提交是我们的分支上独有的
- 检查其中哪些提交不是合并操作的结果
- 检查哪些提交在对方覆盖更新时并没有被纳入目标分支
- 把查到的这些提交应用在 <remote>/<branch> 上面
对于pull命令,你若想要默认使用选项--rebase,可以执行以下代码更改pull.rebase的默认配置
git config --global pull.rebase true
参考资料:
[1] Git-变基.https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
Git分支变基-知识点整理记录的更多相关文章
- 13.Git分支-变基(rebase)、rebase VS merge
1.变基的基本操作 在Git中整合来自不同分支的修改主要有两种方法:merge和rebase. 看下面的例子: 开发任务分叉到了两个不同的分支,并且都有了新的提交. 这时候我们可以使用 git mer ...
- git常用命令速查:创建,修改提交,撤销,切换分支,合并分支,变基解决冲突
创建 $ git init #在当前目录下创建一个空的本地仓库 $ rm -rf .git #删除本地仓库 $ git add . #把当前目录下的所有文件添加到暂存区 $ git commi ...
- git rebase(变基)操作
1.rebase(变基)操作 注意事项:rebase 改变分支的根源,绝对不要在与其他人共享的分支上进行操作rebase黄金法则:绝不要在公共的分支上使用它! 1.1git merge 与 git r ...
- git 入门教程之变基合并
git 鼓励大量使用分支---"早建分支!多用分支!",这是因为即便创建再多的分支也不会造成存储或内存开销,并且分支的作用有助于我们分解逻辑工作,这样一样其实比维护单一臃肿分支要简 ...
- git操作的各种命令整理
1.常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git ann ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- Git知识总览(六) Git分支中的远程操作实践
前几篇博客陆陆续续的讲了好多关于Git操作的内容,本篇博客仍然也不例外,不过本篇博客的主题是关于git的远程操作的.依照之前博客的风格,我们依然依托于LearningGitBranch中的相关内容来探 ...
- Git分支中的远程操作实践
Git分支中的远程操作实践 前几篇博客陆陆续续的讲了好多关于Git操作的内容, 其中在上篇博客聊了<Git中的merge.rebase.cherry-pick以及交互式rebase>,本篇 ...
- Git-merge & rebase(变基)
在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase. merge: merge有两种方法,fast-forward(快速合并)和three-way merge(三方合并 ...
- 在Visual Studio 中使用git——分支管理-下(九)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
随机推荐
- java学习之socket编程
0x00前言和思维导图 Socks实际上是什么:实际上是提供了精彩通信的端口,在通信之前双方都必须要创造一个端点才能通信,其实感觉socket跟计算机的三次握手有些相似,分为三个步骤: (1)服务器监 ...
- C语言指针重点
指针 指针与一维数组 万能公式 p[i] = *(p+i) = (i+p) = i[p] &p[i] == &((p+i))== p+i 指针与二维数组 二维数组万能公式: ((p+i ...
- Kubernetes集群管理工具kubectl
Kubernetes集群管理工具kubectl 概述 kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署 命令格式 ...
- js和jquery页面初始化加载函数的方法及顺序
运行下面代码.弹出A.B.C.D.E的顺序:A=B=C>D=E. <html> <head> <title>首页</title> <scri ...
- 自学 TypeScript 第一天 环境开发配置 及 TS 基本类型声明
前言: 自学第一天,什么是TS ,为什么要用 TS TS 全程 Typed JavaScript at Any Scale 解释起来就是 添加了类型系统的 JavaScript, 是 JavaScr ...
- 2018 Web开发人员学习路线图
以下 Web 开发人员学习路线图是来自 Github developer-roadmap 项目,目前已经有繁体版翻译 developer-roadmap-chinese. 主要有三个方向,分别为前端开 ...
- 【云原生 · Kubernetes】配置 Rancher docker 云平台
个人名片: 因为云计算成为了监控工程师 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying 1.1 Rancher 概述 Rancher 是一个开源的企业级容器管理平台.通过 Ranc ...
- 《Java口袋指南》-内容总结
Java口袋指南 一.语言 1.命名 类名:大驼峰 泛型:E标识集合元素 方法名:小驼峰 变量名:小写 包名:小写或下划线 2.词法元素/token 字符串压缩优化 ...
- 前端开发:4、JavaScript简介、变量与常量、数据类型及内置方法、运算符、流程控制、循环结构、内置方法
前端开发之JavaScript 目录 前端开发之JavaScript 一.JavaScript简介 二.JS基础 三.变量与常量 四.基本数据类型 1.数值类型 2.字符类型 3.布尔类型 五.特殊数 ...
- flutter系列之:flutter中的变形金刚Transform
目录 简介 Transform简介 Transform的使用 总结 简介 虽然我们在开发APP的过程中是以功能为主,但是有时候为了美观或者其他的特殊的需求,需要对组件进行一些变换.在Flutter中这 ...