当前位置:   article > 正文

Git 进阶(合并与变基)_合并 变基

合并 变基

代码合并与变基

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

  1. merge合并
    对于两个分支,如下图:
    在这里插入图片描述
    整合分支最容易的方法是 merge命令。 它会把两个分支的最新快照(C3和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)
    在这里插入图片描述
  2. rebase合并
    另一种方法:你可以提取在 C4中引入的补丁和修改,然后在 C3的基础上应用一次。 在 Git 中,这种操作就叫做 变基。 你可以使用 rebase命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
    在上面这个例子中,运行:
$ git checkout experiment 
$ git rebase master 
First, rewinding head to replay your work on top of it... Applying: added staged command
  • 1
  • 2
  • 3

它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。
在这里插入图片描述
现在回到 master分支,进行一次快进合并。
在这里插入图片描述
优雅地合并分支代码并提交
通过对比两种合并方法,rebase的合并能够让提交历史变成串行,看起来更加整洁。所以在合并代码时,有的人喜欢rebase完成合并。此外,rabase还有个作用,修改提交历史,优雅的合并代码,就是通过适当的rebase修改提交历史,将本地自己开发多个提交进行适当的合并,然后再rebase合并分支。

  1. rebase的使用
    以将3次commit信息合为一个为例
git log  //查询得知总共提交了3次commit
  • 1
git rebase -i HEAD~3

  • 1
  • 2

此时得到如下页面
在这里插入图片描述

此时输入 i,进入编辑模式,保留最上面的pick,把下面的所有pick改成 s,然后 esc 最后 :wq 退出。
然后进入如下图的commit信息内容展示部分,输入 i,进入编辑模式,只保留第一个commit信息,其余的删除,#开头的为注释不用关注
最后 esc :wq退出
在这里插入图片描述
最终效果如图
在这里插入图片描述
最后推送代码

//强制推送到远程
git push -f
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/610524
推荐阅读
相关标签
  

闽ICP备14008679号