zoukankan      html  css  js  c++  java
  • git rebase 变基

    假设我们有如下两个分支,feature和master都对文件做了修改,有前进。

    变基其实也是一种合并分支的方法。如我们可以切换到feature分支下后,再用git reabse master命令进行分支合并。为什么要切换到feature分支下呢?而这句命令又是什么意思?

    首先,我们得知道,使用merge合并时,其实是一种三方合并,就是修改后的master分支和feature分支,是以修改前的master分支为基础进行的合并。盗图:

    可以认为c3,c4分别代表修改后的master分支,feature分支,而c2就是修改前的master分支,做为c3,c4基础的。

    这时再看rebase变基这个名称,不就变换基础吗?那把谁变成基础分支呢?再盗图:

    可以看到,我们把c3作为基础了,也就时修改后master分支,而feature分支的变化直接作用在master分支上,形成了新的master分支c4'。实现这些的命令:

    git checkout feature

    git rebase master

    和之前一样,先要解决冲突,并且如何解决的方法都提供给我们了。

    git add test.txt

    git rebase --continue

    这时,feature(c4')分支就以修改后的master(c3)分支为基础进行的改变。
    接下来就可以切换回master分支,并快速合并两个分支。

    $ git checkout master
    $ git merge feature复制代码

    说到这,,有点想骂人了是不,不是有merge了吗?要rebase这么麻烦干嘛啊??请下图:

    没有变基的合并:

    变基后的合并:

    嗯嗯,没错了,变基的作用就是修整历史,将分支历史并入主线

    总结如下:

    git checkout feature
    git rebase master
    git add test.txt
    git rebase --continue
    git checkout master
    git merge feature

     

    参考:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

  • 相关阅读:
    分层应用——怎样实现登录?
    浅谈UML的概念和模型之UML九种图
    C++ 顶层 const
    Cooley-Tukey算法 (蝶形算法)
    Android 4.4 Kitkat 使能 USB adb 功能
    Linux多线程编程小结
    排序算法汇总总结
    nodeJs基础
    MyBatis入门学习(一)
    IOC/DI的基本思想
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/13604268.html
Copyright © 2011-2022 走看看