在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。

merge:

merge有两种方法,fast-forward(快速合并)和three-way merge(三方合并)

1、快速合并:

两个branch在一条线上,合并master和feature0只需要将master指针后移

2、三方合并:

情况:

选取C2,C4,C6生成快照,形成新commit C7,当前branch指向C7

rebase:

1、git rebase --onto

例子:(想要将client合并到master,但不想合并server)

git rebase --onto 变基目标分支 变基过渡分支 变基当前分支

$ git rebase --onto master server client

快速合并master和client,如下

server完成了,想要合并到master处

git rebase --onto 变基目标分支 变基当前分支

$ git rebase master server

2、rebase –interactive

git rebase -igit rebase --interactive,使用该指令可以合并提交历史,其后参数可以是某一特定提交对象ID或执行特定提交对象的指针,将输出该提交对象之后的所有提交对象(不包括该提交对象),如HEAD~表明输出当前分支最新一次提交对象,HEAD~~表明输出当前分支的最新的两次提交对象。HEAD~n表示输出当前分支最后n次提交

git rebase -i origin/master:可以获取最后一次从origin远端仓库拉取(pull)或推送(push)之后的所有提交。

3、变基使用原则

永远不要对已经推到主干分支服务器或者团队其他成员的提交进行变基。

变基操作的实质是丢弃一些现有的提交,然后相应地新建一些内容一样但实际上不同的提交。如果你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作,此时,如果你用 git rebase 命令重新整理了提交并再次推送,你的同伴因此将不得不再次将他们手头的工作与你的提交进行整合,如果接下来你还要拉取并整合他们修改过的提交,事情就会变得一团糟。

Git-merge & rebase(变基)的更多相关文章

  1. git rebase(变基)操作

    1.rebase(变基)操作 注意事项:rebase 改变分支的根源,绝对不要在与其他人共享的分支上进行操作rebase黄金法则:绝不要在公共的分支上使用它! 1.1git merge 与 git r ...

  2. Git merge rebase cherry-pick 以及 游离commit 的测试

    Microsoft Windows [版本 10.0.17134.345] (c) Microsoft Corporation.保留所有权利. C:\Users\zhangyang\Desktop\b ...

  3. git merge rebase的区别及应用场景

    前两天和同事交流发现他在日常开发中跟上游保持同步每次都是用git pull操作,而我一直习惯git fetch然后rebase,发现这两种操作后的log是有些区别的.他每次pull操作之后都会自动生成 ...

  4. git merge / rebase 分支的新建与合并

    merge https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5% ...

  5. git merge 与 rebase

    git merge git rebase merge V.S. rebase 参考材料 写在开始: 对merge和rebase的用法总有疑惑,好像两个都能完成"获取别的branch的comm ...

  6. git merge 与 git rebase

    git merge git rebase merge V.S. rebase 参考材料 写在开始: 对merge和rebase的用法总有疑惑,好像两个都能完成"获取别的branch的comm ...

  7. git 入门教程之变基合并

    git 鼓励大量使用分支---"早建分支!多用分支!",这是因为即便创建再多的分支也不会造成存储或内存开销,并且分支的作用有助于我们分解逻辑工作,这样一样其实比维护单一臃肿分支要简 ...

  8. GIT学习笔记(5):变基

    GIT学习笔记(5):变基rebase 变基 引入变基 在Git中整合来自不同分支的修改主要有两种方法:merge以及rebase. 整合分支最容易的方法是merge,他会把两个分支的最新快照以及两者 ...

  9. git merge & git rebase

    git merge & git rebase bug error: You have not concluded your merge (MERGE_HEAD exists). hint: P ...

随机推荐

  1. vue中如何实现后台管理系统的权限控制

    vuejs单页应用的权限管理实践 一.前言 在广告机项目中,角色的权限管理是卡了挺久的一个难点.首先我们确定的权限控制分为两大部分,其中根据粒的大小分的更细: 接口访问的权限控制 页面的权限控制 菜单 ...

  2. axios基于常见业务场景的二次封装

    axios axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中.在前端框架中的应用也是特别广泛,不管是vue还是react,都有很多项目用axios作为网络 ...

  3. [yii2]urlmanger

    首先配置下nginx,确保可以不使用index.php来访问 server{ listen 8082; server_name yii2.dev; access_log logs/yii2.acces ...

  4. threesixty.min.js 和jquery.threesixty.js使用总结----实现360度展示

    最近公司做一个项目需要360度展示汽车的外观,就用到了threesixty.min.js,自己总结一下使用方法: treesixty.min.js 源码: /*! threesixty-slider ...

  5. 【旧文章搬运】《从PEB获取内存中模块列表》的补充

    原文发表于百度空间,2008-7-26========================================================================== 继续研究PE ...

  6. cardboard sdk for unity 系统分析 - 属性行为分析CardBoard类

    一.CardBoard类是个单例类,全局只有一个CardBoard对像且在需要时才生成: CardBoard中主要使用了BaseVRDevice device这个对像,而这个对像也是单例类BaseVR ...

  7. HDOJ5020【几何】

    题意: 给你n个点,问有几对三个点在一条直线上 思路: 目前为止很少写的几何题- 一开始两层for没有判断重复. 然后看了一些题解说排序一下,然后枚举每个点,求一个同一斜率的个数k,ans+=(k-1 ...

  8. poj1338【丑数·DP】

    我记得这道题以前写过,而且是写出来了.DP吧. 然后现在想了好久...没想出来.... 然后考虑一下递推..mdzz-直接就是让之前的这个每次乘以2,3,5就好了嘛,然后每轮取最小. //#inclu ...

  9. 黑客攻防技术宝典web实战篇:定制攻击自动化习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 指出使用自动技巧在应用程序中枚举标识符时用到的 3 个标识符“触点”. (a) HTTP ...

  10. tyvj 1391 走廊泼水节【最小生成树】By cellur925

    题目传送门 题意简化:给你一棵树,要求你加边使它成为完全图(任意两点间均有一边相连) ,满足原来的树是这个图的最小生成树.求加边的价值最小是多少. 考虑Kruskal的过程,我们每次找一条最短的,两边 ...