什么是 rebase?

git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。
原理很简单:rebase需要基于一个分支来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。这里的操作是基于文件事务处理的,所以你不用怕中间失败会影响文件的一致性。在中间的过程中你可以随时取消rebase 事务。

官方解释: https://git-scm.com/book/zh/v2/Git-分支-变基

git rebase 和 git merge 有啥区别?

rebase会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
举例:如果你从 master 拉了个feature分支出来,然后你提交了几个 commit,这个时候刚好有人把他开发的东西合并到 master 了,这个时候 master 就比你拉分支的时候多了几个 commit,如果这个时候你 rebase master 的话,就会把你当前的几个 commit,放到那个人 commit 的后面。

merge 会把公共分支和你当前的commit 合并在一起,形成一个新的 commit 提交

注意:

  • 不要在公共分支使用rebase
  • 本地和远端对应同一条分支,优先使用rebase,而不是merge

抛出问题:

为什么不要再公共分支使用rebase?
因为往后放的这些 commit 都是新的,这样其他从这个公共分支拉出去的人,都需要再 rebase,相当于你 rebase 东西进来,就都是新的 commit 了

  • 1-2-3 是现在的分支状态
  • 这个时候从原来的master ,checkout出来一个prod分支
  • 然后master提交了4.5,prod提交了6.7
  • 这个时候master分支状态就是1-2-3-4-5,prod状态变成1-2-3-6-7
  • 如果在prod上用rebase master ,prod分支状态就成了1-2-3-4-5-6-7
  • 如果是merge
    1-2-3-6-7-8
    ........ |4-5|
  • 会出来一个8,这个8的提交就是把4-5合进来的提交

merge和rebase实际上只是用的场景不一样
更通俗的解释一波.
比如rebase,你自己开发分支一直在做,然后某一天,你想把主线的修改合到你的分支上,做一次集成,这种情况就用rebase比较好.把你的提交都放在主线修改的头上
如果用merge,脑袋上顶着一笔merge的8,你如果想回退你分支上的某个提交就很麻烦,还有一个重要的问题,rebase的话,本来我的分支是从3拉出来的,rebase完了之后,就不知道我当时是从哪儿拉出来的我的开发分支
同样的,如果你在主分支上用rebase, rebase其他分支的修改,是不是要是别人想看主分支上有什么历史,他看到的就不是完整的历史课,这个历史已经被你篡改了

常用指令

  • git rebase -I dev 可以将dev分支合并到当前分支
    这里的”-i“是指交互模式。就是说你可以干预rebase这个事务的过程,包括设置commit message,暂停commit等等。

  • git rebase –abort 放弃一次合并

  • 合并多次commit操作:
    1 git rebase -i dev
    2 修改最后几次commit记录中的pick 为squash
    3 保存退出,弹出修改文件,修改commit记录再次保存退出(删除多余的change-id 只保留一个)
    4 git add .
    5 git rebase --continue

文章转载:

git rebase 还是 merge的使用场景最通俗的解释

文章参考:

git官方中文文档说明

git rebase 和 gite merge 区别相关推荐

  1. #39;git merge#39;和#39;git rebase#39;有什么区别?

    本文翻译自:What's the difference between 'git merge' and 'git rebase'? git merge和git rebase什么区别? #1楼 参考:h ...

  2. #39;git pull#39;和#39;git fetch#39;有什么区别?

    主持人注意:鉴于此问题已经发布了67个答案 (其中一些已删除),请在发布另一个问题之前考虑您是否正在贡献新内容 . git pull和git fetch什么区别? #1楼 我花了一点时间来了解有什么区 ...

  3. 用git rebase合并

    合并issue3分支的时候,使用rebase可以使提交的历史记录显得更简洁. 现在暂时取消刚才的合并. $ git reset --hard HEAD~ 切换到issue3分支后,对master执行r ...

  4. Git rebase 和 Git merge 的区别,你知道吗?

    编辑搜图 请点击输入图片描述 Git是大多数程序必备的工具之一,Git常用那么几个命令:pull.push.status.merge.rebase.Git rebase 和 Git merge都是合并 ...

  5. git merge 与 git rebase的区别

    转自:https://blog.csdn.net/liuxiaoheng1992/article/details/79108233 其实这个问题困扰我有一段时间,相信也有人和我一样有这个困扰,网上已有 ...

  6. Git必学的merge和rebase区别

    rebase or merge? 一.git merge 场景一 :先pull再commit 场景二:先commit再pull 二.git rebase 场景一:先pull再commit 场景二:先c ...

  7. git merge 和 git rebase的区别

    (1)git rebase 让你的提交记录更加清晰可读 git rebase 的使用 rebase 翻译为变基,他的作用和 merge 很相似,用于把一个分支的修改合并到当前分支上. 如下图所示,下图 ...

  8. [转]git merge 与 git rebase的区别

    git log --graph可以查看分支合并图 1>他们都是用于从一个分支获取并且合并到当前分支 2>一个场景:在feature分支进行新特性的开发,与此同时,master分支也有新的提 ...

  9. 自动化部署之git merge和git rebase的区别

    命令行测试 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3 ...

  10. 合并代码还在用git merge吗?我们都用git rebase!

    欢迎关注方志朋的博客,回复"666"获面试宝典 git merge 和 git rebase的区别 目的都是将一个分支的 commit 合并到到另外一个分支中去. git merg ...

最新文章

  1. 第二个冲刺期的第七天
  2. GideView 动态列模板
  3. 【收藏】机器学习入门的常见问题集(文末送书)
  4. 【算法】 - 动态规划 + 位运算
  5. linux内核PID管理
  6. c语言中static使用方法
  7. [转载] 百科全说——漆浩:观手分辨五行人教您五行人的养生绝招(11-01-1011-01-11)...
  8. 移动磁盘故障,如何在Mac修复?
  9. 一年总结:2016.7.9 - 2017.7.9
  10. lc滤波器是利用电感的感抗_“电感”的作用与使用方法
  11. Docker 基础 ( 二十 ) 部署Redis集群,问题记录
  12. thinkphp开启子域名无法正常访问_内网穿透之动态域名解析_DDNS(二)
  13. 同态滤波(光照不均)
  14. TMK2SLNO TMK1SLNO 华为OSN1800 2路STM-16,8路STM-4或8路STM-1光接口板
  15. springboot 定时器使用方法之并行
  16. 5月30日第壹简报,星期一,农历五月初一
  17. android开发照相机啊,Android照相机开发详解(一)
  18. 药品的泡罩包装技术介绍
  19. Unity打包apk报错: Cannot fit requested classes in a single dex file (# methods: 73376 > 65536)的解决办法
  20. basler相机参数简要中文说明_basler设置相机参数

热门文章

  1. 使用 OpenSSL 创建ssl自签名证书
  2. 【SCIENTIFIC AMERICAN】Internet Cables Could Also Measure Quakes 网络光纤也可以用来测量地震(20191204)
  3. Thread 类创建线程的五种基本写法
  4. html阅读模式怎么进入word模式,word阅读模式怎么取消
  5. es 按条件查询数据总条数
  6. python实现三阶魔方还原
  7. 怎么把图片压缩到30K以下?如何用手机快速压缩图片?
  8. 科研论文画图技巧分享!超级实用!
  9. 腾讯越来越不懂游戏了
  10. h5页面 请在微信客户端打开链接_使用Fiddler抓包解决“请在微信客户端打开链接”的问题...