有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的

但在git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的时间线,只要我们愿意,git的分支就是这么神奇

然而很多时候你以为你改变了历史,不为人知,那个宇宙并没有消失,而是遗失在了git的世界里,有能力的人便能找到

彼此分开的世界也能随时交叉合并,世界就这样开开合合,偶会需要解决合并冲突

git中的分支非常的轻量,其实就是一个文件,里面记录了分支所指向的commit id,下图中有两个分支分别是master和test,他们都指向了A2这个提交,HEAD是一个特殊的指针,他永远指向你当前所在的位置;有时候你可能不在某一个分支上,不要惊慌,你随时有权利去你想去的分支,git赋予了你新建,切换分支的能力

然后有时候世界并不总如上图那般美好,面对分叉的两个分支,git新手总是一脸茫然,本文我将讲述git中合并分支的方法

在git中合并分支有三种方法,分别是merge,rebase,cherry-pick,而其中merge又有三种区别,下面将一一介绍

fast-forward

如果待合并的分支在当前分支的下游,也就是说没有分叉时,会发生快速合并,从test分支切换到master分支,然后合并test分支

git checkout master

git merge test

这种方法相当于直接把master分支移动到test分支所在的地方,并移动HEAD指针

no-ff

如果我们不想要快速合并,那么我们可以强制指定为非快速合并,只需加上--no-ff参数

git checkout master

git merge –no-ff test

这种合并方法会在master分支上新建一个提交节点,从而完成合并

squash

svn的在合并分支时采用的就是这种方式,squash会在当前分支新建一个提交节点

squash和no-ff非常类似,区别只有一点不会保留对合入分支的引用

git checkout master

git merge –squash test

rebase

当要合并两个分叉的分支时,merge的方式是将待合入分支和当前分支不同的部分,在当前分支新建节点,如下图所示

rebase与merge不同,rebase会将合入分支上超前的节点在待合入分支上重新提交一遍,如下图,B1 B2会变为B1' B2',看起来会变成线性历史

cherry-pick

这命令简直就是神器,给你自由,你想把那个节点merge过来就把那个节点merge过来,其合入的不是分支而是提交节点

总结

只有知道了这些合并方式的区别,才能git在手,天下我有,任你分支在凌乱,我自岿然不动

继续学习

欢迎订阅我的微信公众帐号,只推送原创文字。扫码或搜索:颜海镜

git 移动分支指针_图解4种git合并分支方法相关推荐

  1. git 修改分支名字_大牛总结的 Git 使用技巧,写得太好了!

    作者:你喜欢吃青椒么来源:juejin.im/post/5d157bf3f265da1bcc1954e6 前言 本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下 ...

  2. git 移动分支指针_理解git 中的HEAD指针branch指针

    HEAD指针 使用git checkout 来移动HEAD指针,移动的对象可以是分支指针也可以是快照. HEAD指针可以指向快照也可以指向branch.当指向branch时提交后会和branch指针一 ...

  3. 图解4种git合并分支方法

    git中的分支非常的轻量,其实就是一个文件,里面记录了分支所指向的commit id,下图中有两个分支分别是master和test,他们都指向了A2这个提交,HEAD是一个特殊的指针,他永远指向你当前 ...

  4. 图解4种git合并分支方法 1

    有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的 但在git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的 ...

  5. git 提交代码命令_提交代码:git push 命令的四种形式

    Git是一种分布式版本控制系统,可以高效地处理项目的版本管理.若对Git的基本使用还不太了解,可以先看一下下面的文章. Git 常用命令 使用Git的工作流程:修改.暂存.提交.推送 Git操作:在多 ...

  6. git修改commit注释_【Slog】Git之多人同feature的同分支开发

    抛出问题 多人对同一feature分支进行开发如何最有效.简洁? 这是最近我一直在思考的问题.这个场景有什么问题呢?先来看看通常的做法.一般一个人会对应一个分支来对feature进行开发,与IT不同的 ...

  7. git 拉取远程其他分支代码_【记录】git 拉取远程分支代码,同步到另一个git上...

    最近有需求从某git 上拉取所有分支代码同步到另一git上,现记录操作步骤,以便日后使用: 1:先克隆其中一个分支代码到本地环境 git clone -b test http://账号:密码@XXX. ...

  8. 圆弧齿轮啮合原理_图解八种齿轮的加工原理

    齿形有多种形式,其中以渐开线齿形最为常见.渐开线齿形常用的加工方法有两大类,即成形法和展成法. 1铣齿 采用盘形模数铣刀或指状铣刀铣齿属于成形法加工,铣刀刀齿截面形状与齿轮齿间形状相对应. 2成形磨齿 ...

  9. git add后取消_满满干货!——Git知识总结

    git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 下面就详细的介绍一下git: 本地库 通过命令 git init 把这个目录变成git可以管理的仓库 git ...

最新文章

  1. 11.CCNA第十一天-配置OSPF/EIGRP(增强型内部网关协议)
  2. 有了阿里云服务器如何运行Javaweb项目【安转JDK】【安装mysql】【安装Tomcat】【永久运行】
  3. 在C#中用COM操作CAD
  4. 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...
  5. 开发日记-20190405
  6. 解决 Mysql下使用EF Code First 指定表Engine无效的思路
  7. 记-crontab定时任务
  8. 【大话数据结构算法】直接选择排序
  9. Python解决滑块验证,Scarpy框架采集数据到redis数据库!
  10. Dom-to-image
  11. JVM运行时内存分区
  12. java 各种数据库连接_JAVA连接各种数据库
  13. 把UltraEdit改造成VC
  14. 雷电3菊链功能_同轴科技推出5款USB-C全功能数据线,清一色内置同轴线缆
  15. c语言setlocale函数,setlocale函数
  16. 解决 go get获取package时候time out超时问题
  17. 解决移动端上用overflow-y:scorll样式生硬的问题
  18. 深入分析 ESP32 的 WiFi 状态机
  19. 行为识别:让机器学会“察言观色”第一步
  20. 中国信息安全测评中心-自主原创测评

热门文章

  1. Laravel 事件侦听的几个方法 [Trait, Model boot(), Observer Class]
  2. vue 使用font-awesome
  3. php根据修改时间删除指定目录下文件
  4. 2018.3.31 设计模式之生成器模式详解及例子(对象创建型模式)
  5. 用maven创建Spring MVC项目
  6. shell脚本编程-结构化命令2-for命令
  7. 位置导航---MXCMS Position标签说明
  8. Project 2007如何打开项目向导
  9. 利用OpenCV的findContours作轮廓检测
  10. Windows使用VNC连接ubuntu