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

但在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-开篇
  • 起底Git-版本控制简史
  • 起底Git-Git简史
  • 起底Git-Git内部原理
  • 起底Git-Git基础
  • 起底Git-Git进阶
  • 起底Git-Git开发流程
  • 起底Git-Git常用命令总结

原文网址:http://yanhaijing.com/git/201...

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

图解4种git合并分支方法 1相关推荐

  1. git 移动分支指针_图解4种git合并分支方法

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

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

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

  3. git合并分支后,删除分支_使用git删除合并的分支

    git合并分支后,删除分支 It's common courtesy to keep your git branch list clean, especially when colleagues ne ...

  4. git命令及git合并分支进行多人协作

    git命令及git合并分支进行多人协作 git命令大全 git的工作区.暂存区.本地仓库和远程仓库 git常用命令 git revert 和 git reset的区别 修改默认分支 合并分支 Git分 ...

  5. idea集成git合并分支_持续集成:合并故事

    idea集成git合并分支 六个月项目如何成为Vaporware的真实故事 北美游戏" 永远的毁灭公爵"的封面艺术. 经过15年的发展,它于2011年发布,这是Vaporware的 ...

  6. idea中使用git合并分支

    idea使用git 合并分支 1. 将主分支(master)更新到自己的分支(dev) 右下角点击分支.checkout到自己分支下.点击自己的分支.选择 remote branches 中的 ori ...

  7. 简单介绍Git合并分支的流程步骤

    这篇文章主要介绍了详解Git合并分支的流程步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 正常合并分支dev到master流 ...

  8. 【GitGitHub - 11】:Git合并分支

    文章目录 Git合并分支 模拟场景 创建分支用于修复bug 合并分支 删除分支 Git合并分支 模拟场景 我们主分支(main)有一个稳定的V4.0版本.现在发现了一个Bug.在不影响主线的情况下,我 ...

  9. git合并分支——带图解释一看就懂版

    git合并分支(一看就懂) 首先,我们创建dev分支,然后切换到dev分支: $ git checkout -b dev Switched to a new branch 'dev' git chec ...

最新文章

  1. pandas pickle序列化为二进制
  2. java笔记之抽象类和接口
  3. SQL语句的基本语法一
  4. python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)
  5. android webview参数,Android webView解析URL参数
  6. AI学习笔记--人机对话的四种形态
  7. 【Win 10 应用开发】在App所在的进程中执行后台任务
  8. Apache Ignite(七):基于Ignite的企业级分布式并行计算
  9. 华为无线路由器信道怎么测试软件,路由器无线信道是什么怎么设置
  10. 解决“Macbook外接显示器后键盘音量键无法使用以及Numlock失效”的问题
  11. App开发者不再遵循苹果iOS设计惯例
  12. 技能get:找到连接WIFI设备的IP地址
  13. 商米机V2和V1内置打印机说明
  14. 论文MICO for MRI bias field estimation and tissue segmentation品讲
  15. 能被2,3,4,5,6,7,8,9...等数整除的数特征
  16. Web的打印方案:WebBrowser(WScript.Shell)、ScriptX(即smsx.cab)
  17. java jdk 8学习笔记,Java JDK 8学习笔记 PDF_源雷技术空间
  18. JavaScript 浏览器中执行
  19. 安装的java打不开tsa文件_java – 具有https tsa的JDK 1.7 jarsigner不再有效
  20. 如何找到一个好的学习率

热门文章

  1. 【2019-09-27】哭又有什么用
  2. 业务系统兼容数据库Oracle/PostgreSQL(openGauss)/MySQL的琐事
  3. 怎样用html写表格
  4. Android设备上直接运行C/C++程序,无需ROOT!!!
  5. NX CAM二次开发 UFUN获得/设置(刀具/几何体/方法/操作)参数
  6. Idea Java 快捷键整理
  7. 小王子,玫瑰花和小狐狸
  8. 5e怎么绑定一键跳投_苹果cms怎么使用?
  9. CPU 中控制器的作用
  10. linux 脚本竖线表示,[转载]Linux shell中的竖线(|)——管道符号