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 中使用 ...
随机推荐
- 扫雷(哈希+bfs)
扫雷 题目描述: 小明最近迷上了一款名为<扫雷>的游戏. 其中有一个关卡的任务如下: 在一个二维平面上放置着 n 个炸雷,第 i 个炸雷 (x\(_i\),y\(_i\),r\(_i\)) ...
- 本地文件上传Gitee
0.对于小白来说,我再细讲一下 一.下载git 下载细节参考博客 二.Git配置 点击桌面的图标,进入Git Bash Here 1.配置自己的用户名和邮箱 git config --global u ...
- Java开发学习(四十一)----MyBatisPlus标准数据层(增删查改分页)开发
一.标准CRUD使用 对于标准的CRUD功能都有哪些以及MyBatisPlus都提供了哪些方法可以使用呢? 我们先来看张图: 1.1 环境准备 这里用的环境就是Java开发学习(四十)----MyBa ...
- Tauri+Rust+Vue 跨平台桌面应用简明教程(1)环境创建+系统事件+自定义菜单
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 Tauri简介 Tauri 是一个工具包,可以帮 ...
- typora实现多平台发布文章
源码下载 前言 之前写过一片文章,typora 使用CSDN作为图床,用来存储 markdown 文章的图片资源文件.后来发现 typora 还可以自定义导出命令,那么也可以利用这个功能实现直接发布到 ...
- day16 正则表达式 & 反射 & Java内存模型(JMM)
day16 class 1)获取一个类的所有信息(变量.方法.构造方法) 2)创建类对象newInstance() Field 1)访问变量或给变量赋值 Method 1)执行具体类对象的指定方法 3 ...
- 第2-4-10章 规则引擎Drools实战(3)-保险产品准入规则
目录 9.3 保险产品准入规则 9.3.1 决策表 9.3.2 规则介绍 9.3.3 实现步骤 9.3 保险产品准入规则 全套代码及资料全部完整提供,点此处下载 9.3.1 决策表 前面我们编写的规则 ...
- K近邻算法(k-nearest neighbor, kNN)
K近邻算法(K-nearest neighbor, KNN) KNN是一种分类和回归方法. KNN简介 KNN模型3要素 KNN优缺点 KNN应用 参考文献 KNN简介 KNN思想 给定一个训练集 T ...
- PyQt4编写界面的两种方式
PyQt4编写界面的两种方式 应用PyQt4开发图形化界面有两种方式,一种是直接通过QtDesigner通过提供的窗口部件拖拽进行GUI创建,另外一种是直接进行编程实现. 第一种,QtDesigner ...
- 推荐一款 在线+离线数据 同步框架 Dotmim.Sync
移动智能应用可以分为在线模式.纯离线模式与"在线+离线"混合模式.在线模式下系统数据一般存储在服务器端的大中型数据库(如 SQL Server.Oracle.MySQL 等),移动 ...